[英]Using GraphDiff on three tables
我有三張桌子
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)
);
給出此錯誤:
不支持更新映射中使用的方法
有什么線索嗎?
感謝和問候。
您的映射是使用FirstOrDefault
未在GraphDiff映射支持,所以這是產生誤差。
您的情況下正確的映射如下所示:
context.UpdateGraph(shippingZone,
map => map.OwnedCollection(zone => zone.ZoneShippingMethods,
with => with.OwnedCollection(method => method.ZoneShippingMethodRanges)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.