我已經繼承了一個Web應用程序,並且用於定義實體之間關係的數據註釋突然停止工作。EF實體上的數據註釋突然停止工作
我嘗試了各種各樣的東西,我無法弄清楚爲什麼希望這裏有人能指出這個問題。
應用程序使用SQLite數據庫,幷包含三(3)基本表:
- 爲了
- order_entry
- order_client
爲爲了實體看起來是這樣的:
[Table("order")]
public class Order
{
[Column("id")]
public int Id { get; set; }
public virtual ICollection<OrderEntry> OrderEntries { get; set; }
[ForeignKey("Id")]
public virtual OrderClient OrderClients { get; set; }
public Order()
{
OrderEntries = new HashSet<OrderEntry>();
}
}
沒什麼特別。一個訂單可以包含很多條目,但一個訂單隻能有一個客戶端。
爲order_entry實體代碼如下所示:
[Table("order_entry")]
public class OrderEntry
{
[Column("id")]
public int Id { get; set; }
[Column("order_id")]
public int OrderId { get; set; }
[ForeignKey("OrderId")]
public virtual Order Order { get; set; }
}
同樣,沒有任何幻想。一個條目只能屬於一個訂單。
OrderEntries工作得很好,我們可以做一些基本的包括但問題:
ctx.Orders.Include(x => x.OrderEntries).ToList();
的問題,但是,開始與order_client表,在許多對一的關係與秩序。
的order_client實體:
[Table("order_client")]
public class OrderClient
{
[Column("id")]
public int Id { get; set; }
[Column("order_id")]
public int OrderId { get; set; }
public virtual ICollection<Order> Orders { get; set; }
public OrderClient()
{
Orders = new HashSet<Order>();
}
}
我們試圖加入[ForeignKey的( 「的OrderId」)屬性爲 「訂單」,但是這將引發異常說,財產「的OrderId 「無法在父角色」訂單「中找到。
如果我們將[InverseProperty(「Orders」)]屬性添加到「OrderId」屬性,則會拋出列表OrderClient_Id無法在表中找到的異常。
的order_entry和order_client表與數據庫中的結構爲了一個foreign_key約束,我們確信這一點。
我完全沉迷於此。不幸的是,我們無法將當前的應用程序實例移動到流暢的API上,因爲變更影響大於SLA協議,因此我們需要解決當前的問題。
任何想法都會受到歡迎。
UPDATE
最初的開發者創建的客戶端 - 順序關係不正確。他表示一個訂單可以有多個客戶,一個客戶有多個訂單的實例。
感謝您的迴應,但該網址根本無法幫助我們以數據庫優先。我們用代碼優先的方式嘗試了他們在那裏教的內容,並且它可以工作,但是我們有一個現有的數據庫,其中包含我們不能丟失的數據,所以我們首先關閉了代碼,這至少不適用於數據庫 - 至少,這就是爲什麼我在這裏。 – JadedEric
這個URL本身並沒有幫助,但是你指出了這個問題,而且我一開始就看不到它。感謝您的幫助,非常感謝。 – JadedEric