0

假设我们有CustomersCustomerCategories与 nn 的关系 DbContext/ObjectContext。我也想保持AuditLog表中的关系状态。在常规情况下,我可以通过以下代码达到此目的:

ChangeTracker通过以下代码获取关系的状态:

foreach (ObjectStateEntry dbEntry in){ 
   objectContext
   .ObjectStateManager
   .GetObjectStateEntries(~EntityState.Detached)
   .Where(o=>o.IsRelationship)

然后通过以下代码找到两个相关实体的键:

(dbEntry.CurrentValues.GetValue(0) as EntityKey).EntityKeyValues[0].Value //for the key of related entity in customers table 
(dbEntry.CurrentValues.GetValue(1) as EntityKey).EntityKeyValues[0].Value //for the key of related entity in CustomerCategories table 

除非新添加的相关 Customer 或相关 CustomerCategories 导致上述代码返回 null,否则一切正常。所以我找不到相关实体。

反正有没有正确找到相关实体?

4

1 回答 1

0

最后,几个小时后,我找到了一个简单的解决方案:GetObjectByKeyObjectContext 有而 DbContext 没有的方法!它通过实体引用搜索整个上下文。所以我做了它而不是上面的代码:

 objectContext.GetObjectByKey((dbEntry.CurrentValues.GetValue(0) as EntityKey));
 objectContext.GetObjectByKey((dbEntry.CurrentValues.GetValue(1) as EntityKey));
于 2012-04-09T10:23:31.597 回答