EF之CodeFirst
1.Entity Framework简述
ORM(对象关系映射)是一种思想,即在实体类和数据库表建立映射关系,而Entity Framework就是ORM框架的一种,简称为EF.
2.Code First(代码优先)
在EF中有很多模式,比如Code First,DBFirst,ModelFist等。本文中主要介绍Code First(代码优先)
顾名思义,在开发中先从代码出发,因为常规的开发思想是从数据库出发,要在数据库建表等等之类的;当然也有Code First From DB 模式,即原有数据库的基础上进行Code First
#起步
为了方便测试,建立一个控制台应用程序。使用Nuget包添加EF的引用,添加一个employee类,以及一个DbContext类
employee.cs
public class employee
{
public int Id { get; set; }
public string EmployeeName { get; set; }
}
MyDbContext.cs
public class MyDbContext:DbContext
{
public DbSet<employee> employees{get;set;}
}
#数据迁移
1.enable-migrations 不区分大小写,该指令将启动CodeFirst 迁移
2.add-migration CreateTable 添加一个迁移,CreateTable是备注信息,可以随意写。添加之后会增加一条迁移记录,我们可以看到增加的表以及字段
3.update-database 把本次迁移提交到数据库,会在SqlServer数据库创建数据库和表以及一个迁移记录表。数据库的前缀是项目名,数据库名是我们建的DbConetext类
#数据注释
修改employ类,并加上一些特性。以下是常用的一些注释,Table可以指明映射到数据库的表名(默认是复数,即employees),Column可以指明映射到数据库的列名,key表示为主键,required映射到数据库值不能为空,
NotMapped不用映射到数据库.....
[Table("employee")]
public class employee
{
[Key]
public int Id { get; set; }
[Required,MaxLength(10,ErrorMessage ="长度超出范围")]
public string EmployeeName { get; set; }
public DateTime Birthday { get; set; }
[Column("status")]
public string state { get; set; }
[NotMapped]
public string Test { get; set; }
public int Age { get; set; }
}
*更新表记得迁移提交哟
#Demo
static void Main(string[] args)
{
using (var db = new MyDbContext())
{
employee xh = new employee()
{
EmployeeName = "萧何",
Birthday = Convert.ToDateTime("2001-01-01"),
state = "enable"
};
db.employees.Add(xh);
db.SaveChanges();
var query = from s in db.employees
orderby s.EmployeeName
select s;
foreach (var item in query)
{
Console.WriteLine("*****"+item.EmployeeName+"*****");
}
Console.ReadKey();
}
}