0

そのような質問がすでに多く存在することは知っていますが、私のシナリオでこの問題を解決する方法がわかりません。

私には顧客がいて、売り手もいます。顧客ある必要はありませんが、すべての売り手顧客です。

私の注文には顧客売り手がいますが、売り手はすでに彼の中に顧客を持っています

それは私の顧客エンティティです

    public class Customer : BaseEntity
    {
        public Customer(Name name, DateTime? birthDay, Email email, string password, List<CreditDebitCard>  creditDebitCards = null)
        {
            [...]
        }

        public  Name Name { get; private set; }
        public DateTime? BirthDay { get; private set; }
        public  Email Email { get; private set; }
        public string Password { get; private set; }
        public int? CreditDebitCardId { get; private set; }
        public ICollection<CreditDebitCard> CreditDebitCards => _CreditDebitCards;
        public IEnumerable<Order> Orders { get; private set; }
        [...]
}

私の売り手エンティティ

public class Seller : BaseEntity
    {
        public Seller(string schoolName, string cardIdPath, string identityNumber, int customerId)
        {
            [...]
        }

        public string SchoolName { get; private set; }
        public string CardIdPath { get; private set; }
        public string IdentityNumber { get; private set; }
        public Customer Customer { get; private set; }
        public int CustomerId { get; private set; }
        public IEnumerable<Order> Orders { get; private set; }

    }

私の注文エンティティ

public class Order : BaseEntity
    {
        public Order(IList<OrderItem> orderItems, int customerId, int sellerId)
        {
            [...]
        }

        #region Fields
        private IList<OrderItem> _orderItems;
        #endregion

        #region Properties
        public int SellerId { get; private set; }
        public Seller Seller { get; private set; }
        public int CustomerId { get; private set; }
        public Customer Customer { get; private set; }
        public EOrderStatus Status { get; private set; }
        public ICollection<OrderItem> OrderItems
        {
            get { return _orderItems; }
            private set { _orderItems = new List<OrderItem>(value); }
        }
        public decimal Total => GetTotal();

        #endregion
        [...]
   }

私のオーダーマップ

public static class OrderMap
    {
        public static EntityTypeBuilder<Order> Map(this EntityTypeBuilder<Order> cfg)
        {
            cfg.ToTable("ORDER");
            cfg.HasKey(x => x.Id);
            cfg.Property(x => x.CreationDate).IsRequired();
            cfg.Property(x => x.IsActive).IsRequired();
            //cfg.Property(x => x.Discount).HasColumnType("money");
            cfg.Property(x => x.Status).IsRequired();
            cfg.HasMany(x => x.OrderItems);
            cfg.HasOne(x => x.Customer);
            cfg.HasOne(x => x.Seller).WithMany(b => b.Orders).OnDelete(DeleteBehavior.ClientSetNull);
            return cfg;
        }
    }

既に移行を追加していますが、'update-database' を設定すると、次のエラー メッセージが表示
されます。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更します。制約またはインデックスを作成できませんでした。以前のエラーを参照してください。

これは .netcore2.0 プロジェクトで、ef-core 2 を使用しています

4

1 に答える 1