私はEntityFrameworkに比較的慣れていません。以下は、一般的なCRUD機能に使用しているコードです。
internal class clsRepository<T> where T : EntityObject
{
private ObjectContext objCtxt;
private ObjectSet<T> objSet;
public clsRepository()
{
objCtxt = new DAL.Entities();
objSet = objCtxt.CreateObjectSet<T>();
}
public clsRepository(ObjectContext context)
{
objCtxt = context;
objSet = objCtxt.CreateObjectSet<T>();
}
public T AddEntity(T entity)
{
objSet.AddObject(entity);
objCtxt.SaveChanges();
return entity;
}
public void UpdateEntity(T entity)
{
object ent;
if (!objCtxt.TryGetObjectByKey(entity.EntityKey, out ent))
{
objSet.Attach(entity);
objCtxt.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);
}
else
{
objCtxt.ApplyCurrentValues<T>(entity.EntityKey.EntitySetName, entity);
}
objCtxt.SaveChanges();
}
public void DeleteEntity(T entity)
{
object ent;
if (!objCtxt.TryGetObjectByKey(entity.EntityKey, out ent))
{
objSet.Attach(entity);
objCtxt.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Deleted);
}
objSet.DeleteObject(entity);
objCtxt.SaveChanges();
}
}
1)これはエンティティモデルを操作する効率的な方法ですか?
2)
objCtxt.CreateObjectSet<T>()
:このコード行は、データベース内のすべてのエンティティをオブジェクトコンテキストにロードすると想定していますが、これによりパフォーマンスの問題が発生しますか?
誰かがより良い方法を提案できますか?ありがとうございました。