public class Client
{
public Int32 ClientID { get; set; }
public virtual ICollection<Inquiry> InquiryManufacturers { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<Inquiry> InquiryRetailers { get; set; }
}
public class Product
{
public Int32 ProductID { get; set; }
public Int32 ClientID { get; set; }
public virtual Client Client { get; set; }
public virtual ICollection<Inquiry> Inquiries { get; set; }
}
public class Inquiry
{
public Int32 InquiryID { get; set; }
public Int32 ProductID { get; set; }
public Int32 ManufacturerID { get; set; }
public Int32 RetailerID { get; set; }
public virtual Product Product { get; set; }
public virtual Client Manufacturer { get; set; }
public virtual Client Retailer { get; set; }
}
Fluent Api - это как
HasRequired(i => i.Product)
.WithMany(p => p.Inquiries);
HasRequired(i => i.Manufacturer)
.WithMany(p => p.InquiryManufacturers)
.HasForeignKey(p => p.ManufacturerID);
HasRequired(i => i.Retailer)
.WithMany(p => p.InquiryRetailers)
.HasForeignKey(p => p.RetailerID);
Итак, вот некоторые классы, которые я определил. Они имеют следующие отношения: Client & Product имеют отношения один ко многим, Client & Inquiry имеют отношения один ко многим и Product & Inquiry имеют отношения один ко многим. Здесь я использую Code First. Теперь, используя fluent api, я определил отношения, эти отношения должны быть обязательными, то есть отношения Client & Product не могут быть нулевыми, также как и Client and Inquiry не могут быть нулевыми.
Однако отношения Client & Inquiry принудительно становятся необязательными с помощью Code First. Когда я пытаюсь сделать их обязательными, EF не генерирует базу данных.
Может ли кто-нибудь сказать мне, что не так в моей модели, что заставляет EF не создавать обязательные отношения между Client & Inruiry? Это происходит из-за каскадного удаления? Как я читал, в mssql может быть только один путь каскадного удаления между клиентом, продуктом и запросом. Любая помощь в объяснении была бы приятна.