2012-09-07 70 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文件。