3

標準モデルがあります。asp.net MVC Scaffolderを、dbcontextから2つのサブクラスであるコンテキストで使用する方法

私は必要な機能を追加するためにdbcontextを継承する基本コンテキストクラスを用意しています。

public class MyContext : DbContext 
{ 
    public void MyFeature() { 
    } 
} 

私はその後、私の実際のデータコンテキスト持っている:私はあなたがコントローラを作成する際に建てscaffolderを使用したいが、私はエラー私が変更した場合は、「サポートされていないコンテキストタイプ」 を取得

public class DataContext : MyContext 
{ 
    public DbSet<Category> Categories { get; set; } 
    public DbSet<Product> Products { get; set; } 
} 

をdbcontextから継承するdatacontextは直接動作しますが、この時点では追加された機能を使用するものがたくさんあるため、継承を変更することはできません。そして、私はもちろん、機能を単純化していますが、実際にはかなりたくさんのものがあります。したがって、datacontextに直接追加すると作業量が増えます。さらに、scaffolderはdatacontextがdbcontextであることを確認するのに十分なスマートにする必要があります。

私のdatacontextでスキャフォルダーを使用するにはどうすればよいですか?

答えて

2

なぜ構図を使用しませんか?

私はContextDetailsと呼ばれる別のクラスでこれらのメソッドをかけることになり、これらのオブジェクトに必要ないくつかのメソッド言うことができますよう、あなたの機能は、実際には必要とされている場合 - これらの線に沿って何かをしてDataContextを持っているが、それほどのようなContextDetailsが含まれています。

//Changed MyContext to ContextDetails 
public class ContextDetails 
{ 
    public void MyFeature() 
    { 
     //Do something 
    } 
} 

public class DataContext : DbContext 
{ 
    public DbSet<Category> Categories { get; set; } 
    public DbSet<Product> Products { get; set; } 

    public ContextDetails DbDetails { get; set; } 
} 

ContextDetailsオブジェクトにDataContext/DbContextに関する情報が必要な場合は、DataContext/DbContextをメソッドまたはコンストラクタに渡します。

この問題のために構成が気に入らない場合は、多分インターフェースを使いたいと思うかもしれません。その場合は照会し、私はその理由を見つけることができ

最高の理由をオブジェクトとしてエンティティデータを操作するための機能を提供していSystem.Data.EntityDbContextから継承しなければなりませんhttp://www.codeproject.com/Tips/309753/Repository-Pattern-with-Entity-Framework-4-1-and-C

コンテキストクラスをチェックアウトあなたの例では継承が機能していません。

EDIT:

私は私の答えを読んで、DBDetailsが最高の名前ではないかもしれませんが、あなたのアイデアを得る実現しました。実装を抽出し、別のエンティティとして使用します。がんばろう!

+0

私はあなたの権利を考えています、インターフェイスを持つコンポジションは唯一の方法です。プロパティとしてDbDetailsを持つDataContextのインターフェイスを使用し、DbDetailsに余分なものが必要になるようにします。 – Solmead

+0

@Solmead私はそれが唯一の方法ではないと確信していますが、私はこの方法を間違いなく望んでいます。がんばろう! –

0

私は最初にあなたがentity framework 4.0をインストールする必要がありますと私は間違いなくこれを試してみてくださいと思うと思う。

+1

私はEntity Framework 5.0を使用しています – Solmead

関連する問題