我有一个遗留的EF 4库,它带有数据库优先生成的ObjectContext和EntityObjects。我想慢慢迁移到使用DbContext,我需要一些指导。
DbContext的一个重载需要一个现有的ObjectContext。我认为这将允许我将现有的ObjectContext包装在DbContext中,并通过IDbSet属性公开我现有的EntityObjects。不幸的是,在创建DbContext时,不会创建IDbSet属性,而是抛出异常,并显示以下消息:“验证类型是否已定义为类,不是原始类,嵌套类或通用类,并且不从EntityObject继承。 “
是否无法使用带有IDbSet的DbContext公开现有的ObjectContext和EntityObjects?我可以用ObjectContext创建一个DbContext但不暴露实体本身似乎很奇怪。
以下是一些示例代码:
public class MyDbContext : DbContext
{
public MyDbContext(MyObjectContext objectContext, bool dbContextOwnsObjectContext)
: base(objectContext, dbContextOwnsObjectContext)
{
}
public IDbSet<Person> People { get; set; }
}
异常是由尝试创建IDbSet的DbContext引起的。 Person是我现有EDMX中的EntityObject。
答案 0 :(得分:2)
如您所述,您无法使用edmx创建的现有实体对象。
您是否考虑过使用Reverse Engineer Code First power tools?
我已经在几个项目中使用过它们,它简单地指向你的数据库,它在同一个项目中生成模型,然后删除edmx文件。