I am relatively new to Entity Framework. Below is the code that I'm using for generic CRUD functionality.
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) Is this an efficient way of working with entity model?
2)
objCtxt.CreateObjectSet<T>()
: I assume this line of code loads all the entities in the db to the object context.Will this lead to any performance issue?
Can anyone suggest a better method? Thank you.