【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

评论

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

全运会开幕!天翼云全力打造“智慧赛事”

天翼云开发者社区

它来了,它来了!开源圈 KOL 的江湖对谈第二季要来了!

OpenTEKr

开源 程序员人生 开源社区 开源软件 优秀开源项目

从“半部电台”到“云监工” 天翼云助力红色电信启航新征程

天翼云开发者社区

对话|鲜丰水果:“看不见”的门店数字化

阿里云云效

云计算 阿里云 云原生 持续交付 数字化运维

云原生技术赋能ISV实现应用现代化

York

云原生

Flutter 图片库高燃新登场

阿里巴巴终端技术

flutter

常见问题(FAQ)页面的搭建步骤

小炮

使用MASA.Blazor写一个标准的查询表格页

MASA技术团队

微博评论高性能高可用计算架构

李大虾

#架构实战营 「架构实战营」

沈阳飞桨领航团Meetup邀请你来,探索AI如何赋能智慧城市

百度大脑

Rust基本概念

Shine

读书笔记 rust

图数据库实操:用 Nebula Graph 破解成语版 Wordle 谜底

NebulaGraph

数据库 开源 图数据库 分布式图数据库

飞桨助力动车3C车载智能识别,为动车组运行保驾护航

百度大脑

2022年中国在线音乐市场年度综合分析

易观分析

昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

Geek_32c4d0

昇腾

CVE-2021-3129:Laravel远程代码漏洞复现分析

华为云开发者联盟

安全 漏洞 代码复现 CVE-2021-3129 base64 标准

4个迭代,从批量交付到持续交付转型

阿里云云效

云计算 阿里云 云原生 研发团队 研发

2021年【大学生Python学习】社区&&小博主,2021最新大厂高频微服务面试总结

程序媛可鸥

Python 程序员 面试

大疆被制裁,请马上卸载postman!

Liam

程序员 Postman 开发工具 API swagger

加密市场普跌 虎符交易所平台币HOO却能连续2个月逆势上涨

区块链前沿News

Hoo 虎符交易所 平台币

2. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml

MASA技术团队

创新的力量天翼云推动科技创新技术实践落地

天翼云开发者社区

云管平台提供的功能一般包括哪些?采购需求主要是什么?

行云管家

云计算 企业上云 云管平台 云管理

社区活动 | Apache Pulsar SIG(特别兴趣小组开放)!欢迎大家加入

Apache Pulsar

开源 架构 云原生 Apache Pulsar pulsar 社区

移动平台WorkPlus助力医院智慧信息化建设

WorkPlus

【堡垒机】2022年云堡垒机品牌排名大比拼!

行云管家

云计算 网络安全 堡垒机 企业安全

AI+生物计算:用计算机视觉技术理解细胞生命

百度大脑

3个月夯实基建,鲜丰水果这样实现研发数字化

阿里云云效

云计算 阿里云 云原生 持续交付 研发运维

如何基于 OpenKruise 打破原生 Kubernetes 中的容器运行时操作局限?

阿里巴巴云原生

向工程腐化开炮|动态链接库so治理

阿里巴巴终端技术

android 动态链接库

2022年中小企业数据安全如何保障?对比华为云与其他云计算大厂,15分钟的字节跳动视频面试

程序媛可鸥

Python 程序员 面试

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