50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

制造业碳足迹追踪:开源能源管理系统如何助力企业实现“碳数据可视化”?

开源能源管理系统

开源 开源能源管理系统

C/C++ 内存问题排查太难?这场直播教你“快、准、狠”

TDengine

tdengine 时序数据库

YashanDB 零售行业的关键应用

数据库砖家

谈谈Vibe编程(氛围编程)

周末程序猿

大模型 vibe coding

YashanDB数据库在医疗行业数据合规中的关键作用

数据库砖家

第一个 Shader 完成!

Miracle

上下文为核心瓶颈!枫清科技如何攻克企业AI应用跨部门协作难题?

Fabarta

人工智能 AI Agent

无学历如何成为程序员

码语者

程序员‘

为什么应该测试无JavaScript的页面体验

qife122

JavaScript 渐进增强

第一个运行起来的 Shader

Miracle

YashanDB是一种新兴的数据库管理系统

数据库砖家

YashanDB数据库在云环境中的部署与管理技巧

数据库砖家

MyEMS 深度解析:核心功能模块、数据流转逻辑与工业能源优化落地路径

开源能源管理系统

开源 开源能源管理系统

YashanDB 可能对社交媒体平台带来影响

数据库砖家

YashanDB数据库在医疗行业的应用实例与优势

数据库砖家

舆情监测中的海外社交媒体监控实战

沃观Wovision

合合信息获首批“个人信息保护合规审计自审计能力评价”最高等级认证

合合技术团队

活动报名预约表单小程序:高效线下交友与活动管理利器

微擎应用市场

YashanDB数据库在零售行业的转型应用

数据库砖家

YashanDB数据库在物联网数据处理中的优势

数据库砖家

YashanDB数据库在线支持与资源的获取方式

数据库砖家

YashanDB数据库在医疗行业中的应用前景

数据库砖家

华金证券再次携手非凸科技,共话AI时代数智交易新生态

非凸科技

YashanDB数据库在人工智能项目中的应用分析

数据库砖家

YashanDB数据库在数据湖中的角色与功能

数据库砖家

YashanDB数据库在物联网数据管理中的创新应用

数据库砖家

YashanDB数据库在游戏行业中的性能优化策略

数据库砖家

YashanDB数据库在云环境中的应用效率探讨

数据库砖家

别再靠 “关设备” 减碳!EMS 的 “预测性控能”,让企业满产也能达标双碳

开源能源管理系统

开源 开源能源管理系统

YashanDB数据库在零售行业数据分析的核心优势

数据库砖家

YashanDB数据库在能源行业管理平台的应用前景

数据库砖家

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