写点什么

Entity Framework 7 中的影子属性

  • 2015-09-02
  • 本文字数:788 字

    阅读完需:约 3 分钟

影子属性是类本身中并不存在,但 Entity Framework 却认为存在的字段。它们能够参与查询、创建 / 更新操作和数据库迁移。微软认为影子属性有两个主要的应用场景:

  • 允许数据访问层访问那些不该由领域模型暴露到应用其它部分的属性
  • 允许开发者高效地添加属性到没有源代码的类中

影子属性在 OnModelCreating 事件中被定义,该事件在 DBContext 中为可重载方法。这里有一个绑定 DataTime 属性 LastUpdated 到 Blog 实体的例子。

复制代码
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<blog>().Property<datetime>("LastUpdated");
}</datetime></blog>

这个属性的一个通用用例是在执行保存操作时自动赋值给 LastUpdated 属性。为此,你可以使用 DBContext.ChangeTracker 来获取 DBEntry 类型的对象列表。你可以这样写:

复制代码
foreach (var item in modifiedEntries)
{
Item.Property("LastModified").CurrentValue = DateTime.Now;
}

一般可以通过重载 DBContext 类的 SaveChanges() 方法实现。通过这里的重载,你可以更新所有需要更新的数据,而又不必在每一个更新数据的地方重复代码。

当 ChangeTracker 适合用于修改保存事件的时候,你会很想绕过 DBEntry 直接访问影子属性。通过 EF.Property 函数就可以做到,如下所示:

EF.Property<datetime>(entity, "LastModified")</datetime>这个表达式放在一个查询中能生成服务器端的 WHERE 和 ORDER BY 子句。

可以在 Channel 9 标题为 Shadow Properties in Entity Framework 7 的视频中了解到关于这个特性的更多信息。

查看英文原文: Shadow Properties in Entity Framework 7


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-09-02 19:002141

评论

发布
暂无评论
发现更多内容

week11 小结

Geek_196d0f

在木莲庄酒店和孩子一起体验“团队作战”的乐趣!

InfoQ_967a83c6d0d7

架构师训练营 第11周

大丁💸💵💴💶🚀🐟

性能相关,进程调度

Linuxer

云原生技术采用增加,全球60%后端开发人员都在使用容器

BoCloud博云

Kubernetes 容器 云原生 CaaS 博云

《精益创业》续

孙苏勇

随笔杂谈 精益创业

一个用户秘密加密验证功能

elfkingw

薪水真的不是工作的全部

escray

学习 面试

oeasy教您玩转linux010105详细手册man

o

“DNAT+云链接+CDN”加速方案,助力出海企业落地生长

华为云开发者联盟

CDN 网络 华为云 企业出海 网络加速

计算机网络基础(二十一)---传输层-TCP连接的四次挥手

书旅

TCP 四次挥手 TCP/IP 协议族

架构师训练营第十一周作业

Hanson

年薪80万技术专家,面试通过后,被发现简历造假!合并8年前多段工作,惨遭警告和淘汰!

程序员生活志

程序员 面试 职场

让这家有12万名员工、1.7万种产品的钢铁厂平滑上云的黑科技是什么?

华为云开发者联盟

大数据 云服务 华为云 非对称加密 KYON

上手Elasticsearch

北漂码农有话说

开源流数据公司 StreamNative 推出 Pulsar 云服务,推进企业“流优先”进程

Apache Pulsar

Apache Pulsar 消息系统 消息中间件

分手快乐 祝你快乐 你可以找到更好的

escray

学习 面试

用户注册密码保存与校验(golang版)

2流程序员

Docker商业版受限,胖容器是个选择

BoCloud博云

Docker 容器 博云

ARTS挑战打卡的100天,我学到了这些

老胡爱分享

ARTS 打卡计划

易实战Spring Boot 2 资源汇总 从入门到精通 内含实战github代码 毫无保留分享

John(易筋)

redis Spring Boot 2 RestTemplate thymeleaf HikariCP

代理,一文入魂

苹果看辽宁体育

Java 后端 代理

Flink状态管理-8

小知识点

大数据 flink scal

如何在面试中表现你所没有的能力

escray

学习 面试

架构师训练营第十一周总结

Hanson

原创 | 使用JPA实现DDD持久化-O/R阻抗失配(1/2)

编程道与术

Java hibernate DDD JDBC jpa

升级的华为云“GaussDB”还能战否?

华为云开发者联盟

MySQL 数据库 开源 Elastic Stack GaussDB

账户经常被盗号怎么办?防盗“黑科技”了解一下

华为云开发者联盟

华为云 云安全 主机安全 双因子认证 弱密码

week11 作业

Geek_196d0f

大数据技术思想入门(五):分布式计算特点

cristal

Java 大数据 hadoop 分布式

满足消费者仪式感要求,木莲庄酒店做得很到位

InfoQ_967a83c6d0d7

Entity Framework 7中的影子属性_语言 & 开发_Jonathan Allen_InfoQ精选文章