标签:
Entity Framework最主要的东西,就是自己创建的、继承于DbContext的类:
/// <summary> /// Context相当于一个数据库 /// </summary> public class MusicContext : DbContext { //base("LocalDB")表示要用到config文件中的名为“LcoalDB”的连接字符串 public MusicContext() : base("LocalDB") { } //DbSet相当于数据表 public DbSet<Album> Albums { get; set; } }
当然,我们的数据表定义类也很简单,如下:
/// <summary> /// 专辑 /// </summary> public class Album { public int AlbumId { get; set; } public string Title { get; set; } public decimal Price { get; set; } }
对应的实际数据表定义为:
可以很容易看到,int和decimal都很正常,string被翻译为nvarchar(MAX)
很多时候我们并不需要让一个纯文本字段定义到nvarchar(MAX),大多数用的是一个实际的值,比如nvarchar(50)。
想在Entity Framework中去这样实现,就得给字段加入特性(Attribute):
/// <summary> /// 专辑(Table表示要为创建的数据表手动设置表名称) /// </summary> [Table(name: "MyTable")] public class Album { public int AlbumId { get; set; } /// <summary> /// StringLength可以设定最大长度 /// </summary> [StringLength(50)] public string Title { get; set; } [Required] public decimal Price { get; set; } }
这时如果我们运行程序,就会报错:
意思就是说:你程序中的表定义和数据库中的表定义不一致(肯定不一致啊,我们都改定义了)
这个时候,我们就需要进行一组操作,将程序中的表定义,同步到数据库中去:
Main方法中,如果调用MusicContext来创建实例,那么Entity Framework就会根据连接字符串去找对应的数据库。
Entity Framework工作的基础就是,类定义和实际数据库情况必须一致,否则就会抛异常报错
标签:
原文地址:http://www.cnblogs.com/Richeir/p/5351632.html