我想编写一个函数,它接收任何 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()
}
}
这可能吗?
最佳答案
你可以像这样找到一个实体的主键
ObjectContext objectContext = ((IObjectContextAdapter)_db).ObjectContext;
ObjectSet<YourEntity> set = objectContext.CreateObjectSet<YourEntity>();
IEnumerable<string> keyNames = set.EntitySet.ElementType
.KeyMembers
.Select(k => k.Name);
然后使用反射来访问它们的值。
关于c# - 从 dbSet 获取主键列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27354266/