标签:
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