Breeze 导航属性错误/一对零或一关系

Breeze 导航属性错误/一对零或一关系,breeze,Breeze,这是我的用户模型: public User{ ... (no navigation Property to modeltype) } 以下模型的灵感来自DocCode OrderDetails->Product,其中只有OrderDetail具有产品的外键。 对于此配置,我从breeze收到一条错误消息:“用户SB和TL的导航属性不好”,但MA的导航属性不好 public modeltype{ public DateTime? ClosedBySB { get; set; }

这是我的用户模型:

public User{
   ... (no navigation Property to modeltype)

}
以下模型的灵感来自DocCode OrderDetails->Product,其中只有OrderDetail具有产品的外键。 对于此配置,我从breeze收到一条错误消息:“用户SB和TL的导航属性不好”,但MA的导航属性不好

public modeltype{
  public DateTime? ClosedBySB { get; set; }

    public long? SBId { get; set; }
    [ForeignKey("SBId")]
    public User SB { get; set; }

    public DateTime? ClosedByTL { get; set; }

    public long? TLId { get; set; }
    [ForeignKey("TLId")]
    public User TL { get; set; }

    public DateTime? ClosedByMA { get; set; }

    public long? MAId { get; set; }
    [ForeignKey("MAId")]
    public User MA { get; set; }
    ....
}
虽然这样做有效:

public modeltype{
  public DateTime? ClosedBySB { get; set; }

    //public long? SBId { get; set; }
    //[ForeignKey("SBId")]
    //public User SB { get; set; }

    public DateTime? ClosedByTL { get; set; }

    //public long? TLId { get; set; }
    //[ForeignKey("TLId")]
    //public User TL { get; set; }

    public DateTime? ClosedByMA { get; set; }

    public long? MAId { get; set; }
    [ForeignKey("MAId")]
    public User MA { get; set; }
    ....
}
我觉得这样行吗? 未进行其他Fluent Api配置。
谢谢您的帮助。

我怀疑EF配置有问题

当有一个导航返回相关用户实体时成功,但当有三个这样的导航属性时失败。您没有
[InverseProperty]
来帮助EF解决这个问题,因为您不希望从用户返回到
模型类型的导航属性(我可以想象您为什么不想要它们)


我认为您必须使用Fluent API来告诉EF您的意思。

我注释掉了ForeignKey属性,并将其放入ModelType的配置文件中:

HasOptional(p => p.SB)
            .WithMany()
            .HasForeignKey(s => s.SBId)
            .WillCascadeOnDelete(false);

        HasOptional(p => p.TL)
        .WithMany()
        .HasForeignKey(s => s.TLId)
        .WillCascadeOnDelete(false);

        HasOptional(p => p.MA)
        .WithMany()
        .HasForeignKey(s => s.MAId)
        .WillCascadeOnDelete(false);
但这会产生同样的错误。SB和TL抛出
错误导航属性
异常。导航属性必须为空,因此我使用了
hasportional()

我不知道在哪里放置任何其他配置,以便breeze识别entityType(对于SB/TL未定义,因此例外)

当模型包含具有相同类型(1对1关系)的2+属性时,我遇到了相同的问题。我必须深入研究微风的逻辑,与协会合作来解决这个问题。似乎breeze会分析它们中的每一个,并从临时数组中删除它们,前提是当前关联具有两端。否则breeze显示“错误导航属性”错误。在多个1对1属性具有相同类型的情况下,breeze将删除所有1对1关系的一端(第一个属性除外),并显示错误。尝试在breeze.js中的“addToIncompleteMap”函数中更改此字符串:

  incompleteTypeMap[np.entityTypeName] = assocMap;


从breeze v 1.0.0开始,此错误已修复。谢谢谢尔盖指出了解决办法

你能告诉我改正这个错误吗?如果我可以重新编程,我将更改微风源并发布修复程序。和thx…EF代码优先模型必须包含具有2个或多个属性的类,这些属性具有相同的1对1关系类型。例如:
public class EntityA{int ID{get;set;}int SomeProp{get;set;}…int EntityB_FirstID{get;set;}虚拟EntityB EntityB_First{get;set;}int EntityB_SecondID{get;set;}虚拟EntityB EntityB_Second{get;set;}
,其中EntityB-其他模型类。非常酷!谢谢我改变了逻辑,所以我只需要一个。但我想不久我会再次遇到这种情况。
if (incompleteTypeMap[np.entityTypeName]) 
  (incompleteTypeMap[np.entityTypeName])[np.associationName] = np;
else
   incompleteTypeMap[np.entityTypeName] = assocMap;