c# - 从 dbSet 获取主键列

标签 c# .net entity-framework dbset

我想编写一个函数,它接收任何 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/

相关文章:

c# - 网站自动化的最佳方法?

c# - .Net GetProcesses 的访问被拒绝

c# - Entity Framework 代码优先迁移和 Firebird

c# - 将 Unity 解决方案导出到 WebGL

c# - 依赖注入(inject)和工厂

c# - 使用 Visual Studio 2010 Express 将 .doc 保存/转换为 .html

c# - 代码优先模型映射

c# - Entity Framework 查询 SQL Server 2017 图形数据库的语法

.net - Azure CosmosDB - 如何创建 DocumentClient(它是内部的)?

c# - MSBuild 中出现错误 CS0840,但 VS2015 中没有错误