0

次のようなインターフェイスがあるとします。

public interface IIconComponent
{
   // statements ...
}

次に、以下のようにクラス内にこのインターフェイスを実装しています

public class IconComponent : IIconcomponent
{
   // implementing the interface statements ..
}

次のようなmvc3でテーブルを作成します。

public class IconDBContext : DbContext
{
   public DbSet<IIconComponent> Icon {get; set;} //Is this statement possible 
}

これは、クラス IconComponent オブジェクトをテーブルに格納するためのインターフェイス タイプのオブジェクトのセットを作成することです。MVC3 でこれを行う方法は?

これにはモデルバインダーを実装する必要がありますか? または、他の方法が存在しますか?

ありがとう、

4

3 に答える 3

2

EF はインターフェイスをサポートしていません。DbSet実際の実装で定義する必要があります。実装を使用するように変更すると、抽象化を使用する理由がないため、アクションでもそれを使用する可能性が高くなります。

于 2012-04-09T10:19:36.090 に答える
0

本当に必要な場合は、Entity Framework クラスにインターフェイスを実装させることができます。POCO を使用すると簡単です。edmx を使用すると、インターフェイスからの派生を含む部分クラスを作成できます。しかし、ラディスラフが言ったように、そのようなDbSet<IIconComponent>ことは不可能です。

これを使用したいシナリオを想像できます。たとえば、特定のインターフェイスのみを受け入れるが、EF クラスを設定したい他のアプリケーション コンポーネントを扱う場合などです。(先日、レガシー UI レイヤーでまさにそれを行いました)。

于 2012-04-09T20:46:31.030 に答える
0

エンティティ フレームワークを使用する理由は、その上に抽象化レイヤーを作成しているからです。これは、エンティティ フレームワークをまったく使用していないためであり、エンティティ フレームワークがインターフェイスを操作できないためです。

于 2012-04-09T10:20:34.730 に答える