entity-framework - EF ChangeTracker 访问被跟踪实体及其导航集合
问题描述
我想跟踪变化。我有一个班级/模特
public class Emp
{
public MoreInfo MoreInfo { get; set; }
public ICollection<Works> Works { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
foreach (var e in _db.ChangeTracker.Entries<TEntity>())
{
foreach (var key in e.Properties)
{
if (key.IsModified)
{
//I can get the FirstName, LastName fields
}
}
}
但我不知道如何循环 MoreInfo 和 ICollection Works 并检查其参数?
解决方案
根据 EF Core 术语,这些不是属性,而是导航,因此无法通过Properties
. 使用Navigations
属性获取引用和集合导航属性的条目(具有通用属性/方法)
foreach (var navEntry in e.Navigations)
{
// e.MoreInfo, e.Works
if (navEntry.IsModified)
{
}
}
或Reference
并Collections
获取相应的条目(具有特定的属性/方法)
foreach (var refEntry in e.References)
{
// e.MoreInfo
if (refEntry.IsModified)
{
}
}
foreach (var colEntry in e.Collections)
{
// e.Works
if (colEntry.IsModified)
{
}
}
但是属性和导航都被认为是成员,因此您可以使用Members
通用属性/方法来处理它们
foreach (var memberEntry in e.Members)
{
// e.MoreInfo, e.Works, e.FirstName, e.LastName
if (memberEntry.IsModified)
{
}
}
推荐阅读
- gradle - 如何在 build.gradle 中声明 gradle 5.0 版?
- azure - 如何为 Azure 函数指定 web.config 中通常包含的内容?
- php - 使用 $_FILE 图像上传更新 SQL Server 表中的 VARBINARY(MAX) 列
- angularjs - 我们可以将 es6 与 AngularJS 一起使用吗
- selenium - 无法在硒的文本框中输入数字
- javascript - 打开授权代码流弹出窗口,获取令牌并在同一个按钮单击时使用它
- c# - KfxReleaseScript 中的 LogError()
- scala - 组织与类型关联的 Scala 隐式
- selenium - 如何在没有 AutoIt 的情况下在 selenium 中下载 chrome 文件时处理“保留”和“丢弃”选项?
- java - Soap 消息级安全性