2009-07-02 2 views
0

Возможно ли выполнить частичное обновление через linq2sql?Linq to sql частичное обновление?

Если я хочу обновить только 2 поля я хотел бы использовать SQL как

update table set col1 = val1, col2 = val2 where id = @id 

Я найти процесс «извлечь его из базы данных, изменить его, а затем обновить» немного, а неэффективное, если не просто странно ,

ответ

0

LINQ (языковой комплекс Запрос) предназначен для запросов, а не для полного CRUD. LINQ-to-SQL обрабатывает действия Update, Delete и Create с помощью типичной объектной модели.

Поскольку у вас уже есть идентификатор объекта, который вы хотите обновить, мы предполагаем, что вы есть, что объект сущности в LINQ (например, from item in table where id=1 select item):

myItem.Col1 = "val1"; 
myItem.Col2 = "val2"; 

dataContext.SubmitChanges(); 

Это работает для одноразовых обновлений, где у вас есть конкретная запись для изменения.

Если по какой-то причине, вы не имеете исходный объект сущности, но имеют идентификатор, вы можете выполнить произвольный SQL с помощью DataContext:

dataContext.ExecuteQuery(
    "UPDATE table SET col1={0}, col2={1} WHERE ID={3}", 
    value1, 
    value2, 
    id); 
+0

Я так и думал, спасибо. – Vnuk

0

Да, вы можете сгенерировать операторы обновления, не делая выборки :

Foo foo=new Foo { FooId=fooId }; // create obj and set keys 
context.Foos.Attach(foo); 
foo.Name="test"; 
context.SubmitChanges(); 

см https://stackoverflow.com/a/3351534/52817

Смежные вопросы