假設我有以下實體:如何添加條件,更新與實體框架LINQ到實體的條目
public class Library
{
public int ID { get; set; }
public ICollection<Book> Books { get; set; }
public Library()
{
Books = new HashSet<Book>();
}
}
public class Book
{
public int ID { get; set; }
public int LibraryID { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public DateTime PublicationDate { get; set; }
public bool CheckedOut { get; set; }
}
還有一堆庫,每個庫有一堆的書籍。 ID = 1的圖書館中的某人檢出ID = 42的圖書,因此我想將CheckedOut
屬性更新爲true。假設無論出於什麼原因,我已經知道圖書館ID和書籍ID,但不知道其他信息。我可以不從數據庫中獲取的所有圖書數據很容易只更新CheckedOut
屬性:
Book book=new Book(){
ID=42,
LibraryID=1,
CheckedOut=true
}
context.Books.Attach(book);
var entry=context.Entry(book);
entry.Property(b=>b.CheckedOut).IsModified=true;
context.SaveChanges();
這裏是我的問題。如果數據庫中的LibraryID
不是1
這本書,我該如何強制它失敗?在普通的SQL中,我可以編寫
UPDATE Books SET CheckedOut=1 WHERE ID=42 AND LibraryID=1
我該如何對實體框架做同樣的事情?
一個很明顯的用例這裏是增加更多的安全性 - 例如,如果用戶沒有從其他任何庫比1