簡體   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