EF Code First 入门 包括 数据迁移

创建三个类,第三个类 是 EF的上下文

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF_CODEFIRST_Test
{
    class GreadInfo
    {
        [Key]
        public int id { get; set; }
        [StringLength(32)] //长度
        [Required]
        public string number { get; set; }
        [Required]
        public DateTime createTime { get; set; }

        public virtual ICollection<Student> Student {get;set;}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;

namespace EF_CODEFIRST_Test
{
    class Student
    {
        [Key]
        public int id { get; set; }
        [Required]
        public string number { get; set; }
        [Required]
        public string name { get; set; }
        [Required]
        public int age { get; set; }
        [Required]
        public DateTime birthday { get; set; }

        public virtual GreadInfo GreadInfo { get;set;}
    }
}
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF_CODEFIRST_Test
{
    class CodeFirstDBContext:DbContext
    {
        public CodeFirstDBContext():base("name=ZQDBTestEntities")
        {

        }

        //模型映射成表的时候这个方法被执行
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();  //将映射成的表移除复数约定,不加s
        }

        //定义俩个属性表示可以对实体进行操作
        public DbSet<GreadInfo> GreadInfo { get; set; }
        public DbSet<Student> Student { get; set; }

    }
}

添加应用程序配置文件 App.config

添加 链接字符串,与上下文中对应的一样

<connectionStrings>
    <add name="ZQDBTestEntities" connectionString="Data Source=10.132.0.34;Database=ZQDBTest;UID=sa;PWD=SAsa12;" providerName="System.Data.SqlClient"></add>
  </connectionStrings>

安装 包  EntityFramework  添加引用  entity

在p'rogram.cs 中使用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF_CODEFIRST_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            CodeFirstDBContext dbContext = new CodeFirstDBContext();
            dbContext.Database.CreateIfNotExists();// 没有就创建DB
            Student s = new Student();
            s.id = 1;
            //s.name = "张三";
            //s.number = "3452";
            //s.age = 15;
            //s.birthday = DateTime.Now.AddYears(-15);
            GreadInfo g = new GreadInfo();
            g.id = 1;
            g.number = "01";
            g.createTime= DateTime.Now.AddYears(-30);
            dbContext.GreadInfo.Add(g);
            var i=dbContext.SaveChanges();
            Console.WriteLine(i);
            Console.ReadKey();
        }
    }
}

数据迁移

第一步:打开NuGet控制台,输入"Enable-Migrations"启用Code First迁移。.

第二步:在控制台中输入“Add-Migration AddUrl”,其中AddUrl是迁移的名称,方便以后根据这个名称进行降级。

第三步:在控制台中输入“Update-Database”,这个时候可能会因为当前项目不是启动项而报错,我们可以执行Update-Database的时候指定启动,这么我只是简单的将当前项目设置为启动项。

 

有的时候第一步会报错,我遇到一个错误

未能加载文件或程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”

原因是我安装了多个 entityFramework的包,卸载就好了

发布了89 篇原创文章 · 获赞 4 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/m0_37879526/article/details/103963387