簡體   English   中英

使用動態 LINQ 動態更新表

[英]Dynamically update table using Dynamic LINQ

我有一個列名列表,我想動態更新表並將這些列的所有行設置為 NULL。 當前代碼正在使用if邏輯,並且在列列表更改時需要不斷更新

var columns = new string[] {"FirstName","LastName"};
using(var scope = new TransactionScope())
{
     foreach(var col in columns)
     {
       if(col == "FirstName")
       {
          dbContext.Users
                .Where(x=>x.ParentID = 1234)
                .Update(x=> new User()
                { 
                   FirstName = null
                }
       }

       if(col == "LastName")
       {
          dbContext.Users
                .Where(x=>x.ParentID = 1234)
                .Update(x=> new User()
                { 
                   LastName = null
                }
       }   
     
     }

     scope.Complete();
}

我還在使用帶有 EF 6 的動態 LINQZ 框架。有沒有辦法動態更新表的某些列? (我也可以構造 sql 更新字符串作為 CommandText 執行,但我試圖避免這種情況)

免責聲明:我是Entity Framework Plus項目的所有者

UpdateFromQuery類似於Update from EF Extensions 允許使用ExpandoObjectIDictionary<string, object>

例如:

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("FirstName", null);

dbContext.Users
        .Where(x=>x.ParentID = 1234)
        .UpdateFromQuery(dict);

下周Update方法也會支持,這個時候我會更新我的答案。

更新

v5.1.29 開始Update方法也支持字典

Dictionary<string, object> dict = new Dictionary<string, object>();
dict.Add("FirstName", null);

dbContext.Users
        .Where(x=>x.ParentID = 1234)
        .Update(dict);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM