[英]Using Entity Framework to Select Only Some Columns and then Saving Back to the Database
我想使用實體框架更新數據庫中的序列(SortOrder)列。
似乎最簡單的方法是為集合中的每個項目加載SortOrder,根據需要更新SortOrder,然后將行保存回數據庫。
當然,如果我不需要檢索要更新的行中的每一列,這將更加高效。 我無法理解的是,如果我僅選擇一些列,對這些列進行更改,然后將其保存回去,那將會發生什么。
var x = from o in Package.PackageProducts
orderby o.SortOrder
select new { o.Id, o.SortOrder };
// Modify SortOrder in this collection x
// Save x back to the database
實體框架如何處理這樣的修改和保存部分實體?
有誰知道微軟在某處是否記錄了這種情況? 有人對您會告訴我的事情了解得足夠多嗎?
您可以從匿名類型創建存根實體,並將SortOrder
標記為已修改:
var x = (from o in Package.PackageProducts
orderby o.SortOrder
select new { o.Id, o.SortOrder }).ToList();
// Modify SortOrder in this collection x
...
// Save x back to the database
foreach(y in x)
{
var p = new PackageProduct { Id = y.Id, SortOrder = y.SortOrder }); // stub
db.PackageProducts.Attach(p);
db.Entry(p).Property(p1 => p1.SortOrder).Modified = true;
}
db.SaveChanges();
其中db
是DbContext
。
您可能必須先禁用驗證,因為存根可能沒有所有必需的屬性:
db.Configuration.ValidateOnSaveEnabled = false;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.