簡體   English   中英

在三個表上使用GraphDiff

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM