写点什么

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

评论

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

你必须要了解的「架构」小历史

小齐本齐

spring Spring Cloud Spring Boot

Elasticsearch索引容量管理实践

腾讯云大数据

大数据

架构师训练营第十四周总结

张明森

ARTS打卡Week 12

teoking

ARTS 打卡 (20.09.07-20.09.13)

小王同学

PB级大规模Elasticsearch集群运维与调优实践

腾讯云大数据

大数据

鹰眼 | 分布式日志系统上云的架构和实践

腾讯云大数据

大数据

第五周作业

Vincent

极客时间 极客大学

程序的机器级表示-异构的数据结构

引花眠

计算机基础

oeasy教您玩转 linux 010213 中文 fcitx

o

极客大学-架构师训练营

9527

图计算黑科技:打开中文词嵌入训练实践新模式

腾讯云大数据

大数据

第五周总结

Vincent

极客时间 极客大学

C语言指针详解

C语言与CPP编程

c c++ 编程语言 指针

数据结构与算法系列之数组

书旅

数据结构 算法 数组 数据结构与算法

为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)

冰河

git 冰河 代码管理 代码仓库 分支合并

导致系统不可用原因及密码验证

纯纯

简述C语言宏定义的使用

C语言与CPP编程

c c++ 编程语言

Mysql学习笔记:InnoDB事务和ACID模型

马迪奥

MySQL innodb

03 Spring Security 入门实例

哈库拉玛塔塔

Spring Boot kotlin spring security

前端 10 问之 Docker (第一篇)

局外人

Docker

ASP.NET Core 性能优化最佳实践

newbe36524

微服务 性能优化 .net core ASP.NET Core

ARTS Week16

时之虫

ARTS 打卡计划

Spring 5 中文解析测试篇-Spring MVC测试框架

青年IT男

单元测试 Spring5

CountDownLatch 瞬间炸裂!同基于 AQS,凭什么 CyclicBarrier 可以这么秀?

程序员小航

Java 源码 AQS 源码阅读 CyclicBarrier

安全相关总结

纯纯

链表中移除重复节点,保罗·格雷厄姆的传奇博客,Mac三指拖动操作,大数据平台 John 易筋 ARTS 打卡 Week 17

John(易筋)

大数据 ARTS 打卡计划 链表移除相同节点 保罗格雷厄姆 mac三指操作设置

哦!这该死的 C 语言

苹果看辽宁体育

c 后端

洗牌算法

C语言与CPP编程

c c++ 算法 编程语言

智能商业时代的思考(二)网络协同抓住用户

刘旭东

微信 商业价值 数据智能 网络协同 商业智能

ARTS打卡 第16周

引花眠

微服务 ARTS 打卡计划

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