希望在我的 DbContext 子类上编写通用审计代码。
foreach (var entry in this.ChangeTracker.Entries<MyClass>())
{
if (entry.State == EntityState.Modified)
{
var entityProperties = entry.Entity.GetType().GetProperties();
foreach (var entityProperty in entityProperties)
{
DbMemberEntry propertyEntry = entry.Member(property.Name);
if (propertyEntry is DbPropertyEntry)
{
// IsModified available
}
else if (propertyEntry is DbReferenceEntry)
{
// IsModified not available
}
}
}
}
1) 如果我只更改引用属性,则 entry.State 值为“未更改”。
2) 即使第 1 点设置为“Modified”,DbReferenceEntry 类似乎没有 IsModified 属性,也没有原始值。
我认为这是可能的,因为 EF 必须跟踪它。
有人能帮忙吗?
谢谢, 本
最佳答案
是引用条目(导航属性)不跟踪更改。这是外键属性(在外键关联的情况下)或独立关联的单独对象跟踪更改的责任。在 ObjectContext API 中,您可以通过 ObjectStateManager
获取这些对象,但 DbContext API 似乎没有此功能。我在 MSDN Forum 上问了一个关于这个的问题.
关于c# - Entity Framework Change Tracking API 和引用条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5331936/