В одном из бизнес-сценариев необходимо создать модель в коде, сначала подход, как у бизнеса много поставщиков
Продавцы могут принадлежать многим предприятиям Так что нужно создавать много-много между бизнесом и поставщиками, но поставщик логически сам бизнес (сам)ссылка).Модель поставщика физически не существует.
Как создать модель 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.Не удалось создать ограничение.Смотрите предыдущие ошибки.