EF(EntityFramework) 的 CodeFirst 使用指南一(创建)
创建步骤
- 新建一个类库,然后添加一个新项目—— ADO.NET 实体数据模型,命名为 EFModel
- 选择 CodeFirst 模式,具体根据是否已有数据库,选择空的还是从数据库生成
- 选择在字符串中包含敏感数据,并把连接设置另存为EFModelStr
- 根据提示进行设置,并点击下一步,完成创建
生成文件解析
生成文件可以整理为一下几个文件
EFModel.cs,访问EF实体的上下文
public partial class EFModel : DbContext
{
public EFModel()
: base("name=EFModel")
{
}
public virtual DbSet<AgentConfiguration> AgentConfiguration { get; set; }
public virtual DbSet<AgentConfigurationDetail> AgentConfigurationDetail { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<AgentConfiguration>()
.Property(e => e.Recnum)
.HasPrecision(18, 0);
modelBuilder.Entity<AgentConfiguration>()
.HasMany(e => e.AgentConfigurationDetail)
.WithRequired(e => e.AgentConfiguration)
.WillCascadeOnDelete(false);
modelBuilder.Entity<AgentConfigurationDetail>()
.Property(e => e.Recnum)
.HasPrecision(18, 0);
}
}
可见,这个生成的上下文继承了 DbContext ,在构造函数中,调用的是 DbContext 的一个参数的构造函数,传入的是链接字符串的名称;这个连接字符串保存在 App.config 中
另外,还定义了这个 EF 的所有表以及一些字段属性及表关系
App.config ,里面有数据库的链接字符串设置
注意,例如我创建了一个类库,专门放置EFModel,然后再创建一个控制台应用程序,调用EFModel,那么这个连接字符串应该放置在控制台的App.config里面;
即这个链接字符串应该放在程序启动的地方