写点什么

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

评论

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

Python创建虚拟环境报错:Error: Command......

codists

Python

产品经理如何做好需求管理和分析

易成研发中心

需求管理 需求分析

LED显示屏的亮度真的是越高越好吗?

Dylan

屏幕亮度 LED显示屏 全彩LED显示屏 led显示屏厂家

如何在 Go 项目中隐藏敏感信息,比如避免暴露用户密码?

左诗右码

鸿蒙Flutter实战:13-鸿蒙应用打包上架流程

少湖说

鸿蒙 HarmonyOS

微创软件海外拓展新动向:日本Cosmo Design公司被纳入版图

财见

软件测试类文档,测试文档合集,软件全套资料集(原件)

金陵老街

软件文档 测试文档

鸿蒙原生开发手记:01-元服务开发

少湖说

鸿蒙 HarmonyOS

鸿蒙原生开发手记:02-服务卡片开发

少湖说

鸿蒙 HarmonyOS

鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)

少湖说

鸿蒙 HarmonyOS

Python哪个框架合适开发速卖通商品详情api?

科普小能手

API Python框架 Python开发 API 接口 速卖通API接口

体验免费开箱即用的AI工具:Blackbox.AI

袁袁袁袁满

人工智能 ChatGPT 免费AI工具 GPT-4o 大模型工具

Windows - 内存优化

沉默的老李

内存 windows 11

伟创力收购JetCool以扩大数据中心和电源产品组合

财见

数聚存储,智慧未来:浪潮信息分布式存储在人工智能时代的创新与应用

财见

ACCA联合发布《2024年中国共享服务领域调研报告》,揭示行业数智化转型新趋势

财见

Spring高手之路25——深入解析事务管理的切面本质

砖业洋__

spring 事务管理

魔改 Typora 主题,造就 CodeVeil!

沉默的老李

Typora 定制化 开源、

IaaS、PaaS和SaaS的区别

兮动人

IaaS、PaaS和SaaS

亿珑能源控股有限公司与TMT Acquisition Corp完成合并

财见

使用 DFU 模式修复或恢复 Mac 固件

sysin

Mac DFU

需求管理和产品规划有什么异同点

易成研发中心

需求管理 需求管理工具

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