2014-10-18 2 views
1

У меня есть три таблицыИспользование GraphDiff на три таблицы

ShippingZone 
    ShippingZoneID -> PK 

ZoneShippingMethod: 
    ZoneShippingMethodID -> PK 
    ShippingZoneID -> FK 

ZoneShippingMethodRange 
    ZoneShippingMethodID -> FK 

Контекст:

public ShippingZonesContext() 
      : base("name=ShippingZonesContext") 
     { 
     } 

     public virtual DbSet<ShippingZone> ShippingZones { get; set; } 
     public virtual DbSet<ZoneShippingMethod> ZoneShippingMethods { get; set; } 
     public virtual DbSet<ZoneShippingMethodRange> ZoneShippingMethodRanges { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Entity<ShippingZone>() 
       .Property(e => e.ZoneCountryIDs) 
       .IsUnicode(false); 

      modelBuilder.Entity<ShippingZone>() 
       .Property(e => e.ZoneStateIDs) 
       .IsUnicode(false); 

      modelBuilder.Entity<ShippingZone>() 
       .HasMany(e => e.ZoneShippingMethods) 
       .WithRequired(e => e.ShippingZone) 
       .WillCascadeOnDelete(false); 

      modelBuilder.Entity<ZoneShippingMethod>() 
       .Property(e => e.UserID) 
       .IsUnicode(false); 

      modelBuilder.Entity<ZoneShippingMethod>() 
       .Property(e => e.Password) 
       .IsUnicode(false); 

      modelBuilder.Entity<ZoneShippingMethod>() 
       .Property(e => e.ShippingServiceTypeIDs) 
       .IsUnicode(false); 

      modelBuilder.Entity<ZoneShippingMethod>() 
       .Property(e => e.AccessKey) 
       .IsUnicode(false); 

      modelBuilder.Entity<ZoneShippingMethod>() 
       .Property(e => e.ShipperNumber) 
       .IsUnicode(false); 

      modelBuilder.Entity<ZoneShippingMethod>() 
       .HasMany(e => e.ZoneShippingMethodRanges) 
       .WithRequired(e => e.ZoneShippingMethod) 
       .WillCascadeOnDelete(false); 
     } 

Текущий код:

context.UpdateGraph(shippingZone, map => map 
         .OwnedCollection(p => p.ZoneShippingMethods).OwnedCollection(p => p.ZoneShippingMethods.FirstOrDefault().ZoneShippingMethodRanges) 
        ); 

дает эту ошибку:

The method used in the update mapping is not supported

Любые подсказки?

Thanks & С уважением.

ответ

1

Ваше сопоставление использует FirstOrDefault, который не поддерживается в сопоставлениях GraphDiff, поэтому это приводит к ошибке.

Правильное отображение в вашем случае выглядит следующим образом:

context.UpdateGraph(shippingZone, 
    map => map.OwnedCollection(zone => zone.ZoneShippingMethods, 
     with => with.OwnedCollection(method => method.ZoneShippingMethodRanges))); 
Смежные вопросы