我使用EF6编写了以下内容,但我相信它与EF5完全兼容.代码背后的一般思想是使用

a System.Data.Metadata.Edm中的优秀类来获取导航属性并对这些属性名称使用反射来获取对象的真实属性以进行更新.

我想让我的例子尽可能通用但完整.在提问者的情况下,他显然会用“_uow.Context”替换“context”.

public class MyClass where T : class //T really needs to always be an entity,

//but I don't know a general parent type

//for that. You could leverage partial classes

//to define your own type.

{

public MyEntities context { get; set; }

public void UpdateValues(T originalEntity, T modifiedEntity)

{

//Set non-nav props

context.Entry(originalEntity).CurrentValues.SetValues(modifiedEntity);

//Set nav props

var navProps = GetNavigationProperties(originalEntity);

foreach (var navProp in navProps)

{

//Set originalEntity prop value to modifiedEntity value

navProp.SetValue(originalEntity, navProp.GetValue(modifiedEntity));

}

}

public List GetNavigationProperties(T entity)

{

List properties = new List();

//Get the entity type

Type entityType = entity.GetType();

//Get the System.Data.Entity.Core.Metadata.Edm.EntityType

//associated with the entity.

var entitySetElementType = ((System.Data.Entity.Infrastructure.IObjectContextAdapter)context).ObjectContext.CreateObjectSet().EntitySet.ElementType;

//Iterate each

//System.Data.Entity.Core.Metadata.Edm.NavigationProperty

//in EntityType.NavigationProperties, get the actual property

//using the entityType name, and add it to the return set.

foreach (var navigationProperty in entitySetElementType.NavigationProperties)

{

properties.Add(entityType.GetProperty(navigationProperty.Name));

}

return properties;

}

}

html5获取域对象,entity-framework – EF5如何获取域对象的导航属性列表相关推荐

  1. ADO.NET Entity Framework学习笔记(4)ObjectQuery对象

    ObjectQuery<T>数据加载方式 1. ObjectQuery<T> 提供了一个管理[实体对像]集合 2. ObjectQuery<T>继承System.D ...

  2. Entity Framework 4.1/4.3 之五 (DBContext 之 2 查询功能)

    Entity Framework 4.1/4.3 之五 (DBContext 之 2 查询功能) 昨天我们讲了 DBContext的作用及它的一些相对于ObjectContext进行的优化,今天继续进 ...

  3. 防止Entity Framework重复插入关联对象

    Entity Framework在数据库与对象映射上做了很多工作,除了将数据库里的表映射成相应的对象以外,它还能够自动处理表之间的外键关系,并且可以用导航属性(Navigation Property) ...

  4. 如何使用 Entity Framework 的 DbContext

    微软的 Entity Framework 是一个开源的 对象-关系映射 ORM 框架,它帮助我们打通了 数据库的数据模型 到 代码层的领域模型,Entity Framework 简化了应用程序对数据库 ...

  5. abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库

    一.迁移说明 ABP模板项目Entity Framework Core默认使用的是Sql Server,也很容易将数据库迁移到MySQL,步骤如下. 二.迁移MySQL步骤 1. 下载项目 请到 ht ...

  6. Entity Framework Core 生成跟踪列

    注意:我使用的是 Entity Framework Core 2.0 (2.0.0-preview2-final).正式版发布时,功能可能存在变动. 当您设计数据库时,有时需要添加列以跟踪记录何时更改 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (45) ------ 第八章 POCO之获取原始对象与手工同步对象图和变化跟踪器...

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-6  获取原始对象 问题 你正在使用POCO,想从数据库获取原始对象. 解决方案 ...

  8. 自定义Unity对象生命周期管理集成ADO.NET Entity Framework

    在Unity中,从Unity 取得的实例为 Transient.如果你希望使用多线程方式,就需要在组成时使用lifecycle参数,这时候取出的组件就不再是同一个了.在Unity IOC中,它支持我们 ...

  9. Entity Framework 6 Recipes 2nd Edition(13-2)译 - 用实体键获取一个单独的实体

    问题 不管你用DBFirst,ModelFirst或是CodeFirst的方式,你想用实体键获取一个单独的实体.在本例中,我们用CodeFirst的方式. 解决方案 假设你有一个模型表示一个Paint ...

最新文章

  1. Docker容器化部署config-server无法直接访问
  2. 高糊图片可以做什么?
  3. Qt OpenCV Win10环境配置
  4. 解决Android 插件化方法找不到 问题
  5. 查看端口被占用,被结束此端口占用
  6. C++ 知识记录-LZL
  7. Java的Servlet、Filter、Interceptor、Listener
  8. Linuxs查看进程,杀死进程
  9. 最火UI素材|短视频、直播APP套件,轻松搞定设计
  10. java 文件分割器_Java分割器
  11. django models
  12. [转]Go语言中的make和new
  13. 约翰·冯·诺依曼的开挂人生
  14. NVIDIA GPU简史、命名规则及基础知识
  15. 百度贴吧个人主页_回望人人网/新浪博客/百度贴吧时
  16. 微信屏蔽网站域名,提示“已停止访问该网页”该怎么办?
  17. 《前端单位和网络地址》随手学习笔记
  18. 汽车之家移动主App服务端架构变迁
  19. 【数据库】数据库入门(二): 关系型数据库
  20. hello 驱动编写-最简单的驱动程序

热门文章

  1. 三面求对称二叉树_字节跳动后端实习面经,一面+二面+三面(已收到offer)
  2. 读书到底为了什么,读研到底值不值?
  3. 推荐几个电子/嵌入式方向的公众号
  4. vivado常规操作之烧写bit文件_固化mcs文件_调试界面debug之ila与vio的操作
  5. 常见人名大全_生辰八字起名取名:2020年属鼠的女孩起名字大全
  6. android的四种启动模式,(转)彻底弄懂Activity四大启动模式
  7. 20220130---CTF WEB方向---命令执行和URL解码
  8. VS2010-MFC(文档、视图和框架:分割窗口)
  9. 组件Refs(操作DOM的2⃣️两种方法)
  10. 《程序员修炼之道》笔记(一)