写点什么

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:002632

评论

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

自动生成流程图的软件!这3款值得推荐!

彭宏豪95

人工智能 流程图 在线白板 AIGC 效率软件

AI日报|腾讯,科大讯飞加入百模价格战,黄仁勋预言AGI或五年内出现,DeepL获3亿融资...

可信AI进展

人工智能

数据互通新纪元,企业如何实现系统无缝对接?

聚道云软件连接器

案例分享

邀您参会丨飞天技术沙龙 AI 原生应用架构专场·北京站

阿里巴巴云原生

阿里云 AI 云原生

高效简单办赛的秘诀:自定义判题器

云计算 华为云 大赛 赛事

上海站丨飞天技术沙龙 Serverless + AI 专场开启报名!

阿里巴巴云原生

阿里云 Serverless 云原生

卓越开发管理之道

凌晞

团队管理 项目管理 技术管理 开发管理

预约直播丨ETLCloud训练营:ETL中多流数据合并与运算专题

谷云科技RestCloud

直播 ETL

荒野之境:XMAGE的抵达与眺望

脑极体

影像

加速短剧出海,阿里云视频云获优秀出海产品技术服务金帆奖

阿里云CloudImagine

云计算 视频云 出海 微短剧 短剧

8家券商综合评级上升,4月券商App终端业务体验评测报告发布

博睿数据

LeetCode题解:9. 回文数,翻转一半数字,JavaScript,详细注释

Lee Chen

腾讯面试:如何提升Kafka吞吐量?

王磊

SDK实战指南:从配置到管理,一步步创建阿里云ECS实例

极客天地

客户案例|博睿数据助力中泰证券App用户体验全面升级

博睿数据

探索Solana链上DApp开发:高性能区块链生态的新机遇

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发

LeetCode题解:112. 路径总和,递归,JavaScript,详细注释

Lee Chen

LeetCode题解:112. 路径总和,BFS,JavaScript,详细注释

Lee Chen

高效查询秘诀,解码YashanDB优化器分组查询优化手段

YashanDB

数据库 优化器 分组查询 yashandb 崖山数据库

常态化运营,让数据安全工作落地生根!

极盾科技

数据安全

微服务下认证授权框架的探讨

不在线第一只蜗牛

架构 微服务 框架

面了一个程序员,因为6休1拒绝了我

伤感汤姆布利柏

基于 Prometheus 的超算弹性计算场景下主机监控最佳实践

阿里巴巴云原生

阿里云 云原生 Prometheus

为你的程序精选的7个最佳天气API

幂简集成

API 天气api

哈银消费金融七载风雨兼程,创新引领稳健前行

极客天地

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