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; }
}
的流暢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我已經定義了這些關係,這些關係應該是必需的,這意味着客戶端&產品關係不能爲空,以及客戶端和查詢也不能爲空。
然而,客戶端&查詢的關係被迫爲Code First的可選項。當我試圖讓他們需要EF不會生成數據庫。
有人能告訴我我的模型有什麼問題,它導致EF無法在客戶端& Inruiry之間創建所需的關係?這是由於級聯刪除?在我讀了一些其中mssql只能在客戶端,產品和查詢之間有一個級聯刪除路徑的地方。任何幫助解釋會很好。
您是否收到任何錯誤? 「它被迫成爲一個可選的」是什麼意思? – CDeutsch
沒有錯誤,只是沒有生成數據庫,但如果我使零售商ID和ManufacturerID爲null和Fluent Api爲HasOptional,那麼數據庫就會生成。 –
user781310
請發佈完整的映射配置:與正在討論的3個實體相關的所有內容。提供足夠的信息來重現您的情況。另外,你的目標是哪個數據庫引擎? –