写点什么

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

评论

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

制造行业数字化运维破局之道

云智慧AIOps社区

INFINI Labs 产品更新 | Agent 全新重构,优化指标采集,支持集中配置管理,支持动态下发等功能

极限实验室

console agent loadgen INFINI Labs 极限科技

第25期 | GPTSecurity周报

云起无垠

倒计时丨距离RestCloud新品发布仅有6天!

谷云科技RestCloud

Vert.x 教程 (三):Vertx 应用的Operation

Kevin_913

免费算力部署stable-diffusion

打工人!

Stable Diffustion

苹果mac电脑GoLand 2023 注册码最新 GoLand 2023 中文下载「支持m1 m2」

Rose

Go 语言 GoLand 2023破解版 GoLand 2023注册码

原来你是这样的英特尔:全面解读英特尔产业故事

E科讯

提升团队合作效率,这10款可视化协作软件值得拥有!

彭宏豪95

团队协作 软件推荐 科技 在线白板 协同办公软件

免费算力部署ChatGLM3-6B大语言模型

打工人!

大模型

mac文件夹数据同步工具推荐 Sync Folders Pro中文最新版

胖墩儿不胖y

Mac软件 文件同步工具 文件备份同步

如何将极狐GitLab 漏洞报告导出为 HTML 或 PDF 格式或导出到 Jira

极狐GitLab

gitlab 安全 bug Jira 漏洞检测

AIGC | 如何用“Flow”,轻松解决复杂业务问题

极光GPTBots-极光推送

朝夕光年游戏高光全套解决方案

字节跳动技术范儿

字节跳动 游戏开发

云智慧联合北航提出智能运维(AIOps)大语言模型及评测基准

云智慧AIOps社区

大模型 人工智能「 运维‘ LLM模型

从科幻走向现实,LLM Agent 做到哪一步了?

Zilliz

Python 包管理器入门指南

小万哥

Python 程序员 软件 后端 开发

什么是Vim,Vim安装

芯动大师

【强推】苹果Mac电脑后期处理软件,打造极致的

Rose

Mac破解软件 后期特效软件有哪些 Mac特效制作工具 视频剪辑Mac版

强大日志查看器,助力数据联动分析

观测云

数据分析 日志分析 关联分析

SRM招标采购系统:功能详解及源码获取

金陵老街

火热的低代码平台

树上有只程序猿

低代码平台

mac音频传输工具Loopback激活版 完美兼容macOS14系统和M芯片

Rose

mac音频编辑器 Loopback下载 Loopback激活版 Loopback Mac版

【最新破解秘钥】Vectorworks 2023 Mac必备3D建筑设计软件

Rose

3D建筑设计软件 Mac破解软件 Vectorworks 2023下载 Vectorworks 2023密钥

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