EF-код первая самостоятельная ссылка многие ко многим - PullRequest
0 голосов
/ 08 октября 2018

В одном из бизнес-сценариев необходимо создать модель в коде, сначала подход, как у бизнеса много поставщиков
Продавцы могут принадлежать многим предприятиям Так что нужно создавать много-много между бизнесом и поставщиками, но поставщик логически сам бизнес (сам)ссылка).Модель поставщика физически не существует.

Как создать модель BusinessVendor, имеющую отношения многие ко многим с самим Business и отдельными столбцами IsActive и VendorType в таблице ассоциации, то есть BusinessVendor?

Обновление:

    public class Business
    {
        public Business()
        {
            this.Users = new HashSet<User>();
            this.Departments = new HashSet<Department>();
            this.Addresses = new HashSet<Address>();            
            this.BusinessProducts = new HashSet<BusinessProduct>();
            this.Vendors = new HashSet<Vendor>();
        }

        [Key]
        public int BusinessId { get; set; }

        [Required]
        [Display(Name = "Business Name")]
        public string Name { get; set; }

        [Required]
        [Display(Name = "PAN Number")]
        public string PAN { get; set; }

        [Required]
        [DataType(DataType.EmailAddress)]
        [RegularExpression(@"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessage = "Incorrect Email Format")]
        public string Email { get; set; }

        public string Fax { get; set; }

        [Required]
        [Display(Name = "Registration Number")]
        public string RegistrationNumber { get; set; }

        [Required]
        [Display(Name ="Business ID")]
        public string DisplayName { get; set; }     

        public virtual ICollection<Address> Addresses { get; set; }
        public virtual ICollection<User> Users { get; set; }
        public virtual ICollection<Department> Departments { get; set; }        

        public virtual ICollection<BusinessProduct> BusinessProducts { get; set; }

        public virtual ICollection<CategoryOfProduct> ProductCategories { get; set; }

        public virtual ICollection<Vendor> Vendors { get; set; }

    }

public class Vendor
    {

        [Key]
        public int VendorId { get; set; }

        [Required, ForeignKey("Client")]
        public int BusinessId { get; set; }     

        public int VendorTypeId { get; set; }

        [ForeignKey("VendorTypeId")]
        public virtual VendorType VendorType { get; set; }

        public bool IsActive { get; set; }

        public virtual Business Client { get; set; }

        public virtual ICollection<Business> Businesses { get; set; }


    }


protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
modelBuilder.Entity<Business>()
                  .HasMany(c => c.Vendors)
                  .WithMany(c => c.Businesses)                
                  .Map(op =>
                  {
                      op.MapLeftKey("BusinessId");
                      op.MapRightKey("VendorId");
                      op.ToTable("BusinessVendors");                      
                  });

}

Но теперь возникает проблема с каскадным удалением как

Введение ограничения FOREIGN KEY 'FK_dbo.BusinessVendors_dbo.Vendors_VendorId'в таблице' BusinessVendors 'может вызывать циклы или несколько каскадных путей.Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, либо измените другие ограничения FOREIGN KEY.Не удалось создать ограничение.Смотрите предыдущие ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...