2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

评论

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

设计模式之假如需要一百万个对象

架构师修行之路

有它的加持,单机玩转百亿大数据不是梦!

易观大数据

1.2 了解MyBatis -《SSM深入解析与项目实战》

谙忆

ChaosBlade:从零开始的混沌工程(五)

郭旭东

Kubernetes 云原生 混沌工程

JVM系列之:再谈java中的safepoint

程序那些事

Java JVM JIT safepoint

如何将FastDFS存储数据平滑迁移至XSKY对象存储?

XSKY星辰天合

操作系统和并发的爱恨纠葛

苹果看辽宁体育

Java 并发

Google Protocol Buffer 学习笔记

Geek_4z9ami

protobuf

零基础建网站必备技能,看这一篇就够了

北柯

程序语言 网站搭建 编程网站

设计模式中的单例模式并不完美

架构师修行之路

设计模式 单例模式 23种设计模式 高并发系统设计

设计模式之——单例模式你真的会吗?

诸葛小猿

设计模式 单例模式 Singleton 饿汉式 懒汉式

《SSM深入解析与项目实战》目录与说明

谙忆

C/C++陷阱与套路,当年就是折在这些地儿…

华为云开发者联盟

c++ 设计 编辑 程序 陷阱

SQL的三十而已—SQL30问

大唐小生

sql 技术人生

如何设计一个优秀的组件

Lee Chen

大前端

菊长说丨一文读懂MySQL4种事务隔离级别

华为云开发者联盟

MySQL 数据库 事务隔离级别 事务 华为云

【译】代码中如何写出更有意义的命名

Jackey

代码质量

LeetCode题解:24. 两两交换链表中的节点,迭代,JavaScript,详细注释

Lee Chen

大前端 LeetCode

七的婚姻生活

徐说科技

CDN百科10:快速上手阿里云DCDN全站加速,最新配置与购买优惠教程

阿里云Edge Plus

CDN 直播 网页加速

秒懂云通信:如何使用阿里云号码认证服务(小白指南)

阿里云Edge Plus

云通信 通信云 号码认证

Java项目如何分层

老胡爱分享

分层架构 项目

1.1 了解Spring框架 -《SSM深入解析与项目实战》

谙忆

2.1 类加载器、 双亲委派模型 -《SSM深入解析与项目实战》

谙忆

微服务架构下你的数据一致了吗?

码猿外

架构 微服务 数据一致性

Jessie’s产品经理系列1-基础能力篇

架构5班杨娟Jessie

产品经理 能力模型

InnoDB存储引擎简介

Simon

MySQL innodb

计算机网络基础(十五)---传输层-TCP协议详解

书旅

计算机网络 网络 协议栈 协议族

数据处理能力相差 2.4 倍?Flink 使用 RocksDB 和 Gemini 的性能对比实验

Apache Flink

flink

联盟链有自己的路要走

Leonbond

区块链 联盟链 公有链

视频会议专线部署不会?别急,我教你

华为云开发者联盟

网络 网关 华为云 高清视频 welink

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