【发布时间】:2013-12-03 17:48:55
【问题描述】:
我需要为每个实体添加通用审计日志,因此我覆盖了 DbContext 类中的 SaveChanges() 方法并能够创建日志。
我的问题是外键,我需要获取外键的文本值而不是实体的 id。
提前致谢
RJ
这里是代码
if (dbEntry.State == System.Data.EntityState.Modified)
{
if (!object.Equals(dbEntry.GetDatabaseValues().GetValue<object>(propertyName), dbEntry.CurrentValues.GetValue<object>(propertyName)))
{
var oldvalue = dbEntry.GetDatabaseValues().GetValue<object>(propertyName) != null ? dbEntry.GetDatabaseValues().GetValue<object>(propertyName).ToString() : "";
var newvalue = dbEntry.CurrentValues.GetValue<object>(propertyName) != null ? dbEntry.CurrentValues.GetValue<object>(propertyName).ToString() : "";
Auidlog += displayName + ": Changed from - " + oldvalue + " To - " + newvalue + " ";
}
}
在 oldvalue/newvalue 变量中只返回外键 id,我需要它的描述
【问题讨论】:
-
到目前为止的代码?多一点信息会有所帮助。不清楚你想做什么,不明白怎么做。
-
好的,所以您了解如何使用 dbEntry.CurrentValues 和 dbEntityEntry.OriginalValues。注意 GetDbValues 回到 Db.Different to originalValue 检查。无论如何,这样你就知道发生了什么变化。那么这与外键有什么关系呢?您要查询 EF 模型吗?
-
哪个描述。你有propertyName。那么你指的是哪个文本?
-
感谢 phil 的回复,我想要的是,假设在我的实体(班级)中,我与班级中的另一个实体(学生)(如 studentId PK,studentName)有外键关系表我将只存储 studentid,GetDatabaseValues/OriginalValues 只会给我 id,但我想要来自其他实体的“StudentName”来创建审核日志。
标签: .net entity-framework