繁体   English   中英

外键SaveSaves()上的外键ID和描述-Entity Framework

[英]Foreign key id and description on SaveChanges() overide - Entity Framework

我需要为每个实体添加通用审核日志,因此,我已经覆盖了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,对此我需要描述

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

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

DataSpace.xxxx还有其他枚举,暴露了metaData的不同视图。 因此,请全部检查。

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

这似乎更像是艰巨的挑战。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM