durandal と Breeze テンプレートを使用して asp.net mvc を使用しています。
私は次のクラスを持っています(明確にするためにいくつかのプロパティを削除しました):
public class Rolling
{
[Key]
public int Id { get; set; }
...
public virtual List<Itinerary> Itineraries { get; set; }
}
public class Itinerary
{
[Key]
public int Id { get; set; }
...
public int? VehicleId { get; set; }
public int? TrailerId { get; set; }
...
public virtual Rolling Vehicle { get; set; }
public virtual Rolling Trailer { get; set; }
}
次の流暢な API があります。
modelBuilder.Entity<Rolling>()
.HasMany(c => c.Itineraries)
.WithOptional(c => c.Vehicle)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Rolling>()
.HasMany(c => c.Itineraries)
.WithOptional(c => c.Trailer)
.WillCascadeOnDelete(false);
これらの流暢な API を宣言する順序に注意してください。
実行時に、クライアント側で簡単なクエリを実行して、すべてのローリング エンティティを取得します。
var query = entityQuery.from('Rollings')
.where(predicates)
.orderBy(orderyByClause)
.expand('Itineraries');
それぞれについて、旅程コレクション プロパティを確認します。
rollings()[0].itineraries
Trailer
のプロパティItinerary
が満たされているローリングの旅程のみを取得したことに注意してください。Vehicle
の性質Itinerary
が満たされた転がりは一つもありません。
しかし、流暢な API を次のように交換すると:
modelBuilder.Entity<Rolling>()
.HasMany(c => c.Itineraries)
.WithOptional(c => c.Trailer)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Rolling>()
.HasMany(c => c.Itineraries)
.WithOptional(c => c.Vehicle)
.WillCascadeOnDelete(false);
Vehicle
次に、のプロパティItinerary
が満たされているローリングの旅程のみを取得したことに気付きました。Trailer
の性質Itinerary
が満たされた転がりは一つもありません。
これは正常な動作ですか?バグ?
調査していただきありがとうございます。