我想编写一个函数,该函数接收任何Entity
对象,并通过自动确定的主键查找当前值并更新它。
public void Update(object entity)
{
using (var _db = new MyEntities())
{
var table = _db.Set(entity.GetType());
//Here we should somehow find the entity object which primary key coincides with the one of entity
var entityObj = table.FindObjectByPrimaryKey(entity);
entityObj.CopyDataFrom(entity);
_db.SaveChanges()
}
}
这可能吗?
答案 0 :(得分:4)
您可以找到像这样的实体的主键
ObjectContext objectContext = ((IObjectContextAdapter)_db).ObjectContext;
ObjectSet<YourEntity> set = objectContext.CreateObjectSet<YourEntity>();
IEnumerable<string> keyNames = set.EntitySet.ElementType
.KeyMembers
.Select(k => k.Name);
然后使用反射来访问它们的值。
答案 1 :(得分:-2)
找到答案。
public void Update(object entity)
{
using (var _db = new MyEntities())
{
_db.Entry(entity).State = System.Data.Entity.EntityState.Modified;
_db.SaveChanges();
}
}