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);
Итак, вот некоторые классы, которые я определил.Они имеют следующие отношения: клиент и продукт имеют один ко многим, клиент и запрос имеют один ко многим, а продукт и запрос имеют один ко многим.Я использую Code First здесь.Теперь, используя свободный API, я определил отношения, эти отношения должны быть обязательными, то есть отношения между клиентом и продуктом не могут быть нулевыми, равно как и клиент и запрос также не могут быть нулевыми.
Однако отношениямежду клиентом и запросом вынужден быть необязательным с первым кодом.Когда я пытаюсь сделать их обязательными, EF не создает базу данных.
Может ли кто-нибудь сказать мне, что не так с моей моделью, из-за которой EF не создает требуемые отношения между клиентом и Inruiry?Это из-за каскадного удаления?Как я читал, где mssql может иметь только один путь каскадного удаления между клиентом, продуктом и запросом.Любое объяснение помощи было бы хорошо.