0

これは私のユーザーモデルです:

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

}

次のモデルは、DocCode OrderDetails-> Productから着想を得ており、OrderDetailのみが製品への外部キーを持っています。この構成では、breezeからエラーメッセージが表示されます。ユーザーSBおよびTLの場合は「Badnavproperties」ですが、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; }
    ....
}

これでうまくいくと思いますか?追加のFluentApi構成は行われません。助けてくれてありがとう。

4

4 に答える 4

1

モデルに同じタイプ(1対1の関係)の2+プロパティが含まれている場合、同じ問題が発生しました。この問題を解決するには、アソシエーションとの簡単な作業のロジックを深く理解する必要があります。現在の関連付けに両端がある場合、そよ風がそれらのそれぞれを分析し、一時配列から削除するようです。それ以外の場合、そよ風は「悪いナビゲーションプロパティ」エラーを示します。同じタイプの1対1のプロパティが複数ある場合、そよ風は最初のプロパティを除くこの1対1の関係の一端を削除し、エラーを表示します。breeze.jsの「addToIncompleteMap」関数でこの文字列を変更してみてください。

  incompleteTypeMap[np.entityTypeName] = assocMap;

if (incompleteTypeMap[np.entityTypeName]) 
  (incompleteTypeMap[np.entityTypeName])[np.associationName] = np;
else
   incompleteTypeMap[np.entityTypeName] = assocMap;
于 2013-01-17T17:11:50.260 に答える
1

このバグは、breezev1.0.0で修正されています。修正を指摘してくれたSergeyに感謝します。

于 2013-01-29T02:45:46.477 に答える
0

EF構成の問題が疑われます。

関連するユーザーエンティティを返すナビゲーションが1つある場合は成功しますが、そのようなナビゲーションプロパティが3つある場合は失敗します。[InverseProperty]ユーザーからナビゲーションプロパティに戻る必要がないため、EFがそれを理解するのを助ける必要はありません(ModelTypeそして、なぜそれらが必要ないのか想像できます)。

Fluent APIを使用して、EFに意味を伝える必要があると思います。

于 2013-01-15T07:34:00.987 に答える
0

私は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は例外をスローしbad nav propertyます。ナビゲーションプロパティはnull許容である必要があるため、を使用しHasOptional()ました。他の構成をどこに置くかわからないので、breezeはentityTypeを認識します(例外としてSB / TLでは未定義)。

于 2013-01-15T10:02:58.907 に答える