11

Visual Studio 2010 で MVC3、C# 4.0、および Entity Framework を使用しています。データベースから edmx および Designed.cs ファイルを生成しています。次に、nLayer 構造の一部として、Designer.cs ファイル内のエンティティからインターフェイスを生成しています。

元のコードは

public partial class DataEntrySummary : EntityObject

その後、

public partial class DataEntrySummary : EntityObject, Mb.Interface.IDataEntrySummary

私の懸念は、データベースが変更され (そして変更される)、edmx ファイルを再生成すると、すべてのインターフェイス定義が失われることです。

インターフェイスを再生成せずに同じ結果を達成するためのより良い方法はありますか?

ありがとうございました

4

3 に答える 3

20

EF はキーワードを使用してクラスを生成するpartialため、別のファイルを作成してエンティティに追加機能を追加し、そこにインターフェイス固有のものを配置できます。

public partial class DataEntrySummary : Mb.Interface.IDataEntrySummary
{
}

これらのファイルは、EF がモデルを更新しても影響を受けません。

于 2012-09-10T09:42:54.810 に答える
2

あなたは正しい方向に向かっています。ただし、EDMX を更新するたびにインターフェイスを保持するには、T4 ファイルをカスタマイズする必要があります。

https://entityinterfacegenerator.codeplex.com/からカスタマイズされた T4 ファイルを見ることができます。 これらは、クラスごとに 1 つのインターフェイスを生成するため、簡単にモックして個別にテストできます。

したがって、新しいテーブルまたはフィールドを追加するたびに、EF 型を生成するために Microsoft が提供するものと一緒に T4 テンプレートを実行するだけです。

よろしく。

于 2014-04-29T15:04:18.527 に答える
1

モデルが更新されるたびにインターフェイス定義が追加されるように、モデルの更新時にイベントを作成すると思います。

もう 1 つのオプションは、特定のインターフェイスを実装し、モデルから継承するプロキシ クラスを作成することです。

于 2012-09-10T09:25:19.860 に答える