写点什么

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

评论

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

GPU推理加速与大规模上下文处理

百度开发者中心

人工智能 大模型

无人不识又无人不迷糊的this

华为云开发者联盟

Java JavaScript 开发 华为云 华为云开发者联盟

软件测试学习笔记丨Allure2报告中添加用例支持tags标签

测试人

软件测试

AutoMQ 社区双周精选第九期(2024.03.11~2024.03.22)

AutoMQ

大数据 kafka 云原生 AutoMQ

网心科技入选“2023年广东省名优高新技术产品”名单

网心科技

云计算 边缘计算 网心科技

How Big Data Works

Jackchang234987

基于 NVIDIA Megatron-Core 的 MoE LLM 实现和训练优化

阿里云大数据AI技术

人工智能 模型训练 大模型 LLM

我们所面临的云原生安全问题

德迅云安全杨德俊

网心科技入选“2023年中国云生态创新应用技术产品”

网心科技

云计算 边缘计算 网心科技

Go代码优化实用指南

俞凡

golang

macOS Sonoma 14.4.1 (23E224) 正式版发布,ISO、IPSW、PKG 下载

sysin

macos Sonoma macOS Sonoma

如何培养高质量应用型医学人才, “课-训-赛”育人才系列第二场直播活动圆满结束

ModelWhale

人才培养 数据科学 复合型人才 医学 应用型人才

全面解析 MessagePack:简介及使用技巧

Apifox

json 程序员 前端 后端 MessagePack

与鲸同行,智领未来!和鲸科技高校市场渠道招募启动会顺利召开

ModelWhale

人工智能 软件 数据科学 渠道招募 高校市场

一文带你完整了解Go语言IO基础库

百度Geek说

go语言

野心、梦想与科幻——浅谈外星殖民与软件工程

博文视点Broadview

使用云手机提升WhatsApp使用体验

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 电商云手机

合辑下载 | MatrixOne 与 MySQL 全面对比

MatrixOrigin

数据库 分布式 云原生

有了这 4 款脚本工具, 再也不怕写烂SQL了!!!

Java技术精选

NFTScan 正式上线 Polygon zkEVM NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT\ NFTScan

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