2012-09-07 27 views
3

我有一个传统的EF 4库与数据库第一个生成的ObjectContext与EntityObjects。我想慢慢迁移到使用DbContext,并需要一些指导。慢慢迁移EDMX应用程序以使用DbContext?

DbContext的一个重载需要现有的ObjectContext。我认为这将允许我将我现有的ObjectContext包装在DbContext中,并通过IDbSet属性公开现有的EntityObjects。不幸的是,在创建DbContext时,不会创建IDbSet属性,而是会抛出一个异常:“验证该类型是否定义为类,不是原始类型,嵌套类型或泛型类型,并且不会从EntityObject继承。 “

是否有没有办法使用DbContext与IDbSet暴露现有的ObjectContext和EntityObjects?看起来很奇怪,我可以用ObjectContext创建一个DbContext,但不会公开实体本身。

下面是一些示例代码:

public class MyDbContext : DbContext 
{ 
    public MyDbContext(MyObjectContext objectContext, bool dbContextOwnsObjectContext) 
     : base(objectContext, dbContextOwnsObjectContext) 
    { 
    } 

    public IDbSet<Person> People { get; set; } 
} 

唯一的例外是由的DbContext试图创建IDbSet引起的。 Person是我现有的EDMX中的一个EntityObject。

回答

2

如您所述,您不能使用edmx创建的现有实体对象。您是否考虑使用Reverse Engineer Code First power tools

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