Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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# 检查实体框架6中导航属性的原始值_C#_Entity Framework 6 - Fatal编程技术网

C# 检查实体框架6中导航属性的原始值

C# 检查实体框架6中导航属性的原始值,c#,entity-framework-6,C#,Entity Framework 6,在我的应用程序中,DbContext是持久化的,在保存之前,我想检查用户所做的更改并记录这些更改。这可能不是审计跟踪应用程序的最优雅或最有效的方法,但我在这方面已经走了很长的路 对于普通属性,我可以使用db.Entry(item).originalvalue。对于导航属性,如果导航属性已经加载并且我不想覆盖用户设置的值,我如何检查原始导航属性,是否必须将外键实现为int属性?或者是否有某种方法可以从现有上下文中获取属性或其键 公共类用户 { 公共字符串名称{get;set;} 公共日期时间出生日

在我的应用程序中,DbContext是持久化的,在保存之前,我想检查用户所做的更改并记录这些更改。这可能不是审计跟踪应用程序的最优雅或最有效的方法,但我在这方面已经走了很长的路

对于普通属性,我可以使用
db.Entry(item).originalvalue
。对于导航属性,如果导航属性已经加载并且我不想覆盖用户设置的值,我如何检查原始导航属性,是否必须将外键实现为
int
属性?或者是否有某种方法可以从现有上下文中获取属性或其键

公共类用户
{
公共字符串名称{get;set;}
公共日期时间出生日期{get;set;}
}
公开课工作
{
公共字符串说明{get;set;}
公共用户Asignee{get;set;}
}

在上述代码中,已使用EF从数据库检索作业,并且已加载
Asignee
关系属性。然后操作员将
Asignee
更改为不同的
用户
。如何检查导航属性以前导航到的实体(如果有)?

最好在代码中显示一个示例。谢谢提示。我对问题进行了编辑,使其更加明确。将UserID属性添加到
作业
,以便您可以将其作为原始值进行跟踪。但是,当我更改
用户
属性或在
作业
中时,框架是否会自动修改
UserID