2014-09-10 42 views
1

我有幾個記錄都需要更新爲相同的值。如果我只是使用ADO.NET我可以調用更新他們都在一個存儲過程...在LINQ中更新一組記錄 - 全部一次

UPDATE myTable 
SET myColumn = "XXXXXX" 
WHERE filterColumn == 'YYY' 

但自從我使用實體框架我想知道,如果他們被更新以類似的方式一組記錄不需要遍歷每個值並單獨設置它們?目前我正在使用..

from s in myTables 
where s.filterColumn == 'YYY' 
select s; 

var results = s.ToList(); 

foreach (i in results){ 
    s.myColumn = "XXXXXX" 
} 

是否有一種方法可以像在SQL中一樣設置所有值?

我使用實體框架V6.1

+0

您可以使用EF執行[raw sql queries](http://msdn.microsoft.com/en-us/data/jj592907.aspx)。 – 2014-09-10 16:26:35

回答

3

使用實體框架時,您仍然可以執行sql命令。這是如何做到這一點。

dbContext.Database.Connection.Open(); 
var cmd = dbContext.Database.Connection.CreateCommand(); 

cmd.CommandText = @"UPDATE myTable 
SET myColumn = @myColumn 
WHERE filterColumn = @filterColumn"; 

cmd.Parameters.Add(new SqlParameter("myColumn", "XXXXXX")); 
cmd.Parameters.Add(new SqlParameter("filterColumn", "YYY")); 
cmd.ExecuteNonQuery(); 
+0

'Database.ExecuteSqlCommand'方法更簡單:http://stackoverflow.com/a/5475210/124386 – 2014-09-10 17:58:25