Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架更改跟踪API和引用条目_C#_Entity Framework_Ado.net_Change Tracking_Entity Framework 4.1 - Fatal编程技术网

C# 实体框架更改跟踪API和引用条目

C# 实体框架更改跟踪API和引用条目,c#,entity-framework,ado.net,change-tracking,entity-framework-4.1,C#,Entity Framework,Ado.net,Change Tracking,Entity Framework 4.1,希望在我的DbContext子类上编写通用审计代码 foreach (var entry in this.ChangeTracker.Entries<MyClass>()) { if (entry.State == EntityState.Modified) { var entityProperties = entry.Entity.GetType().GetProperties(); foreach (var entityProper

希望在我的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
            }
        }
    }
}
foreach(this.ChangeTracker.Entries()中的var条目)
{
if(entry.State==EntityState.Modified)
{
var entityProperties=entry.Entity.GetType().GetProperties();
foreach(entityProperty中的var entityProperty)
{
DbMemberEntry propertyEntry=entry.Member(property.Name);
if(propertyEntry为DbPropertyEntry)
{
//已修改可用
}
else if(propertyEntry为DbReferenceEntry)
{
//IsModified不可用
}
}
}
}
1) 如果我只更改引用属性,则entry.State值为“Unchanged”

2) 即使将点1设置为“Modified”,DbReferenceEntry类似乎也没有IsModified属性,也没有原始值

我认为这是可能的,因为EF必须跟踪这一点

有人能帮忙吗

谢谢, Ben

是参考条目(导航属性)不跟踪更改。它由外键属性(在外键关联的情况下)或独立对象跟踪独立关联的更改负责。在ObjectContext API中,您可以通过
ObjectStateManager
获取这些对象,但DbContext API似乎没有可用的对象。我问了一个关于这个的问题