Entity Framework4.1 数据库优先模式,如何映射已存在的实体类
需要对一个项目进行升级改造.希望采用Entity Framework4.1编写新增加的代码.原项目采用N层模式开发,项目架构图如下(新增了部分用于MVC的类库,可以忽略):
现在希望在SQLServerDAL层中使用EF.但是希望EF的model对应到原程序的EasyFastCMS.Model层中(希望Model层独立).我发现Code First模式可以这么实现,例如:
C# code
namespace EasyFastCMS.WebMvc.DAL
{
public class EasyFastCMSContext : DbContext
{
private readonly static string CONNECTION_STRING = "name=DataBase";
public EasyFastCMSContext() : base(CONNECTION_STRING) { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
modelBuilder.Entity<UserGroup>().ToTable("EasyFastCMS_UserGroup");
}
public DbSet<UserGroup> UserGroup { get; set; }
}
}
(以上代码为在MVC中做尝试,实现了EF的model对应MVC中的M)
但是,数据库已存在,并且有大量有用数据,并且我不想使用Code First模式,而希望使用 数据库优先模式.请问在DataBase First模式中,能不能做到类似Code First模式的把 Model独立出来?
------解决方案--------------------
我不太确定,data base first 和 code first 的意思,是不是以数据库为主的开发和以对象模式为主的开发模式,在前期,你们用的是以数据库为主的开发模式,现在增加了MVC的构架,而MVC又是以对象模式为主的开发,如果是这样,是可能的,完全没问题, 在comm中定义一个数据访问接口,由原来的以数据库为主的代码实现接口 ,由EasyFastCMS.WebMvc.DAL去调用(可能需要改底层的代码)
注:我对MVC构架不太了解