LINQ to Entities обновляет несколько строк - PullRequest
1 голос
/ 13 июля 2010

Я новичок в LINQ to Entities и мне нужно несколько советов о том, как думать о множественных обновлениях строк.Моя проблема на самом деле скорее концептуальная, чем синтаксическая, так как я не уверен, правильно ли я думаю о решении.

Вот обновление одной строки.Это кажется очень простым.

products prodtbl = (from p in db.products where p.product_id == 1 select p).First();
prodtbl.product_name = "Blueberry Jam";
db.SaveChanges(); 

Проблема возникает, когда я хочу обновить несколько строк (например, удалить предложение where).Тогда prodtbl не адресуется как список.Если я хочу увидеть название продукта из 10-й строки, это единственный способ сделать это следующим образом?

'List<type> prodlist = prodtbl.ToList<type>()';
string name = prodlist[9].product_name

Теперь, если я изменю prodlist [9] .product_name, как мне обновить исходную строкув продтбл?Так как prodtbl не адресуется как массив, я не могу просто установить его, могу ли я?Нужно ли создавать оператор LINQ с предложением where, который обновляет только одну запись?Если ответ «да», есть ли способ пакетного обновления, если я изменил несколько строк?

Ответы [ 2 ]

1 голос
/ 25 июня 2014

Вы можете выполнить это действие следующим образом,

 var objTrn = context.Trn_Dependent.Where(i => i.DependentID == DependentId).ToList();
                        objTrn.ForEach(x => { x.IsDeleted = true; x.UpdatedBy = objUserInfo.EnrolleeID.ToString(); x.UpdatedOn = DateTime.Now; });                        
                        objTrn.ForEach(p => context.Entry(p).State =    EntityState.Modified);
context.SaveChanges();
1 голос
/ 14 июля 2010

Вам не нужно создавать отдельные операторы.

Вы можете использовать, например:

prodtbl.ElementAt(9).product_name = "Bob";

Или повторять:

foreach (var p in prodtbl)
{
   p.product_name = "New name";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...