現在、私のリポジトリは次のコードで構成されています。
public interface IRepository<T> where T : class
{
T Get(int id);
IQueryable<T> GetAll();
IQueryable<T> Where(Expression<Func<T, bool>> predicate);
IQueryable<T> Query();
void Add(T entity);
void Remove(T entity);
void Save();
}
public class Repository<T> : IRepository<T> where T : class
{
private readonly IContextProvider _ctxProvider;
protected BaseModelContext _ctx
{
get
{
return _ctxProvider.DataContext;
}
}
public Repository(IContextProvider ctx)
{
_ctxProvider = ctx;
}
public T Get(int id)
{
return _ctx.Set<T>().Find(id);
}
public IQueryable<T> GetAll()
{
return _ctx.Set<T>();
}
public IQueryable<T> Where(Expression<Func<T, bool>> predicate)
{
return _ctx.Set<T>().Where(predicate);
}
public void Add(T entity)
{
_ctx.Set<T>().Add(entity);
}
public void Remove(T entity)
{
_ctx.Set<T>().Remove(entity);
}
public IQueryable<T> Query()
{
return _ctx.Set<T>().AsQueryable();
}
public IQueryable<T> Eager(string path)
{
return _ctx.Set<T>().Include(path);
}
public void Save()
{
_ctx.SaveChanges();
}
}
データベースからEDMXモデルを作成しましたが、_ctx.Setを使用して、クラスパターンごとのコードファーストテーブルに対してテンプレートを作成する場所に気づきました。Set()メソッドは、によって作成されたエンティティでは使用できません。生成された.edmxファイル。EFは2つのタイプを簡単に切り替えることができると思いました。EDMXモデルで動作するように、リポジトリクラスを書き直す必要がありますか?