希望在我的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肯定在跟踪这一点。
有人能帮上忙吗?
谢谢,本
发布于 2011-03-17 17:03:08
是,引用条目(导航属性)不跟踪更改。它是外键属性的责任(如果是外键关联),或者是跟踪独立关联的变化的单独对象。在ObjectContext应用程序接口中,你可以通过ObjectStateManager获取这些对象,但是看起来DbContext应用程序接口没有这个功能。我在MSDN Forum上问了一个关于这个的问题。
https://stackoverflow.com/questions/5331936
复制相似问题