0

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が満たされた転がりは一つもありません。

これは正常な動作ですか?バグ?

調査していただきありがとうございます。

4

1 に答える 1