创建三个类,第三个类 是 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的包,卸载就好了