慢慢迁移EDMX应用程序以使用DbContext?

时间:2012-09-07 17:18:10

标签: entity-framework dbcontext edmx

我有一个遗留的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。

1 个答案:

答案 0 :(得分:2)

如您所述,您无法使用edmx创建的现有实体对象。

您是否考虑过使用Reverse Engineer Code First power tools

我已经在几个项目中使用过它们,它简单地指向你的数据库,它在同一个项目中生成模型,然后删除edmx文件。