2014-10-18 72 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)));