我有一個數據庫模型,其中模型之間的關係給Code First帶來一些問題。下面是一個構建的例子。使用流利的API而不是InverseProperty和導航屬性
一位讀者可以讀幾本書,一本書可以被幾位讀者閱讀。另外,每個讀者可能有一本最喜歡的書。
//not-working model
public class BookReader
{
public virtual List<Book> ReadBooks { get; set; }
public virtual Book FavoriteBook { get; set; }
public int ID { get; set; }
}
public class Book
{
public string BookName { get; set; }
public int ID { get; set; }
}
這不起作用。如果在代碼中,多個閱讀器被設置爲閱讀同一本書,則只有其中一個閱讀器將它保存到數據庫(可能是最後一組)。
另外,如果BookReader.FavoriteBook和BookReader.ReadBooks包含相同的書籍和db.SaveChanges()創建這本新書(不是現有的數據庫實體)將導致此錯誤:
同時節省了實體出錯不會爲其關係公開外鍵屬性。
這是我的修復與InverseProperty和導航屬性。
//working model
public class BookReader
{
[InverseProperty("CurrentReaders")]
public virtual List<Book> ReadBooks { get; set; }
public virtual Book FavoriteBook { get; set; }
public int ID { get; set; }
}
public class Book
{
public string BookName { get; set; }
public int ID { get; set; }
//new, unwanted, property
public virtual List<BookReader> CurrentReaders { get; set; }
}
我不想改變模型是這樣的。有沒有一種方法可以在不改變模型的情況下用Fluent API來完成?
我已經發布了類似的問題早,但刪除了它,因爲這個問題在實體書橫空出世無關的問題
工作完美,如此簡潔....謝謝! – Jens