【问题标题】:Entity Framework 0..1 to 0..1 relationshipEntity Framework 0..1 到 0..1 的关系
【发布时间】:2011-11-22 19:02:41
【问题描述】:

我在尝试创建实体并设置其关联属性之一时遇到问题,该关联属性是与另一个实体的 0..1 关系

关联的两端都是0..1

这是我尝试做的事情

var entityA = new EntityA();
var entityB = new EntityB();
entityA.associatedEntity = entityB;
_context.SaveChanges();

它工作得很好,两个实体都保存了,但是当我检索 entityA 时,我将它的 associatedEntity 属性设置为 null

这是为什么呢?它只发生在 0..1 到 0..1 的关系上。

【问题讨论】:

    标签: entity-framework entity-framework-4


    【解决方案1】:

    您的 ObjectContext 是否启用了延迟加载?如果不是,您必须显式加载相关实体。如果您使用的是 POCO 或代码优先,则可能还存在配置问题,这会阻止 EF 创建适当的代理类型,一旦您访问 associatedEntity 属性,该代理类型就会执行延迟加载。

    您可以使用上下文的 ObjectSet 对象之一上的 Include(string) 方法在 EF 中预先加载相关实体,例如:

    context.EntityASet.Include("associatedEntity").Single(e => e.Id == 10);
    

    【讨论】:

    • 我遇到了同样的问题并尝试了您的解决方案。它没有解决我的问题。还有其他想法吗?
    【解决方案2】:

    您可以使用 EF 4.1/2 来实现简单的关系,并将属性放在实体类的属性顶部。 了解更多信息: using features of EF 4.1/2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多