2014-10-18 29 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

任何線索?

謝謝&此致敬禮。

回答

1

您的映射使用的是FirstOrDefault,這在GraphDiff映射中不受支持,所以這會產生錯誤。

在你的情況下,正確的映射是這樣的:

context.UpdateGraph(shippingZone, 
    map => map.OwnedCollection(zone => zone.ZoneShippingMethods, 
     with => with.OwnedCollection(method => method.ZoneShippingMethodRanges)));