Entity Frameworkのedmxモデルコンテキストを使用できるベースリポジトリクラスをセットアップしようとしています。私が抱えている問題は、EF EDMXオブジェクト・コンテキストが実装するインタフェースを見つける必要があるため、依存性注入を介してコンストラクタに渡すことができるということです。以前は、これを作成してHttpContextに格納するDataFactoryを使用していましたが、これは単体テストの機能を無効にします。どんな助けもありがとう。ありがとう!コンテキストインターフェイスEntity Frameworkコンテキストと依存関係注入の使い方
を::
public IMyDataContext {
// One per table in the database
IDbSet<Class1> Class1s { get;set; }
// etc
// The standard methods from EF you'll use
void Add(object Entity);
void Attach(object Entity);
void Delete(object Entity);
void SaveChanges();
}
コンテキストファクトリを私は常にコンテキストに自分のインタフェースを渡しDataContextFactoryを作成し、そのように私のリポジトリにあることを渡されました
public abstract class BaseRepository<T> where T : EntityObject
{
private MyDataModelContext _dataContext;
private ObjectSet<T> dbset;
protected BaseRepository(IObjectContext dataContext)
{
_dataContext = dataContext;
dbset = _dataContext.CreateObjectSet<T>();
}
.....
はEF POCOオブジェクトのために働くことにしていますか?私はEF EDMXモデルを使用しています。 – NullReference
DbContext(mine)とObjectContext(yours)を使用する唯一の違いは、IMyDataContextに.Add()や.Remove()の代わりに.AddObject()や.DeleteObject()などのObjectContext固有のメソッドがあることです。 – robrich
一般的な前提は、コンテキストがクエリに依存しないデータストア固有であることです。リポジトリは、クエリ固有のデータストアにとらわれない呼び出しとして、呼び出し元/アプリケーションの残りの部分にシンクする強固な型のラッパーです。彼らはparamsを渡し、オブジェクトやリストを返す。新しいデータストアにスワップすると、コンテキストが消滅し、リポジトリの内部が改名され、残りのアプリケーションは同じ状態になります。 – robrich