ОБНОВЛЕНИЕ EF Core ... ОТ ВЫБРАТЬ ГДЕ - PullRequest
0 голосов
/ 18 июня 2020

Как я могу создать этот запрос с помощью EF Core SqlServer?

UPDATE Table1
SET Field1 = sil.Field1,
    Field2 = sil.Field2
FROM Table2 sil WITH (NOLOCK)
WHERE sil.Field3= ''
    AND sil.Id1 = Table1.Id1
    AND sil.Id2 = Table1.Id2
    AND sil.Id3 != Table1.Id3

ВАЖНО!

Я хочу создать его с помощью одиночный запрос (не запрос на строку)

1 Ответ

0 голосов
/ 18 июня 2020

AFAIK нет прямого эквивалента оператору UPDATE ... FROM в EF. Вместо этого вы должны запросить свой набор данных, обновить модели сущностей, а затем вернуть sh обновления.

//  2 database select statements
var table1 = database.Table1.ToList();
var table2 = database.Table2.ToList();

//  in-memory processing.  no database involvement.
foreach(Entity1 t1record in table1) {
    var t2record = table2.Where(sil => ...).FirstOrDefault();
    if(null == t2record) { continue; }
    t1record.Field1 = t2record.Field1; // etc...
}
// push changes back to the database.  EFCore should do this as a single SQL statement
database.SaveChanges();
...