我有一個產品類:實體框架一到一個有一個是可選的關係拋出錯誤
public class Product
{
public int ID { get; set; }
[Required]
public string Name { get; set; }
public decimal Price { get; set; }
public Offer Offer { get; set; }
}
和報價類:
public class Offer
{
public int ID { get; set; }
[Required]
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
public decimal OfferPrice { get; set; }
public Product Product { get; set; }
}
基本上想我要實現的是,當報價中添加了與此優惠相關的產品。因此,優惠總是有產品,但產品並不總是需要優惠。如果產品確實有一個我希望能夠通過Product.Offer
訪問它,但在此設置,我得到更新數據庫時出現以下錯誤信息:
Unable to determine the principal end of an association between the types 'WebshopISEC.Models.Offer' and 'WebshopISEC.Models.Product'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.
我已經嘗試了很多東西(數據註釋和Fluent API)並且無休止地搜索,但我似乎無法解決此問題。我嘗試過的流利的API方法:
modelBuilder.Entity<Offer>()
.HasRequired(x => x.Product)
.WithOptional(x => x.Offer);
但是,這工作無濟於事,我該如何分配一個Principal End?和什麼課程?
感謝您的回覆!這會引發以下錯誤:'''「錯誤:新名稱'ID'已經被用作COLUMN名稱,並且會導致不允許的重複。'''' – Mirage
你可以嘗試刪除你的數據庫然後更新數據庫? – WannaCSharp
我已經通過服務器資源管理器手動刪除所有表,現在我似乎無法讓我的表回來..我如何重置遷移歷史,並讓它創建一個基於我當前類的全新數據庫? – Mirage