外键ID和SaveChanges()上的描述 - 实体框架

时间:2013-12-02 10:11:13

标签: .net entity-framework

我需要为每个实体添加通用审核日志,因此我已覆盖SaveChanges()类中的DbContext方法并能够创建日志。

我的问题是外键,我需要获取外键的文本值而不是实体的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,我需要那个描述

1 个答案:

答案 0 :(得分:0)

您可以使用以下方式访问模型的元数据:

   ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
   MetadataWorkspace workspace = objContext.MetadataWorkspace;
   IEnumerable<EntityType> managedTypes = workspace.GetItems<EntityType>(DataSpace.OSpace);

DataSpace.xxxx有其他枚举公开metaData的不同视图。所以检查一下。

但是您打算如何访问Primary表的“text”字段。 找到一个字符串?找到包含术语名称或文本的属性? 也许你可以在每个主表上实现一个接口。或者将属性添加到表格的主文本字段中。

这似乎更像是一项突出的挑战。