我需要为每个实体添加通用审核日志,因此我已覆盖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,我需要那个描述
答案 0 :(得分:0)
您可以使用以下方式访问模型的元数据:
ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
MetadataWorkspace workspace = objContext.MetadataWorkspace;
IEnumerable<EntityType> managedTypes = workspace.GetItems<EntityType>(DataSpace.OSpace);
DataSpace.xxxx有其他枚举公开metaData的不同视图。所以检查一下。
但是您打算如何访问Primary表的“text”字段。 找到一个字符串?找到包含术语名称或文本的属性? 也许你可以在每个主表上实现一个接口。或者将属性添加到表格的主文本字段中。
这似乎更像是一项突出的挑战。