2010-07-20 3 views
1

Ради примеров, позволяет сказать, что у меня есть таблица, содержащая эти столбцыВозможно обновление строки без вытаскивания и обновления каждого столбца?

  • ID (первичный ключ, автоматическое приращение)
  • FirstName (32 символов)
  • LastName (32 символов)
  • Picture (двоичные данные JPEG, содержащие в среднем 10 тыс. данных)

Использование SubSonic и/или LINQ, как я могу обновить только столбец FirstName записи, а не пытаться получить столбец Picture или попробуйте обновить столбец изображения?

Прямо сейчас единственный путь я вижу это делать что-то вроде этого:

var p=Data.People(x=>x.ID==SomeID); 
p.FirstName="Foobar"; 
p.Save(); 

Что происходит по линии от того, что я могу сказать, однако, что она полностью загружает объект и полностью сохраняет объект. Однако я не хочу передавать более 10 тыс. Данных для такой простой операции. Как это исправить?

+0

Кроме того, конечно, я знаю, вы могли бы просто ворваться в сырой SQL, но это кажется неправильным. – Earlz

+0

хотя прошло некоторое время, но я помню, что Subsonic проверяет измененные столбцы. – TheVillageIdiot

+0

@TheV yea, но это не помогает в том, что он вытаскивает все в исходном 'select' – Earlz

ответ

3

Вот старый пример Rob для версии предварительного просмотра SubSonic 3.

db.Update<Products>().Set(
    x => x.Discontinued == false, 
    x => x.ReorderLevel == 100) 
    .Where(x=>x.Category==5) 
    .Execute(); 

http://blog.wekeroad.com/2008/11/12/subsonic-3-0-preview-2

В ваших условиях:

db.Update<People>().Set(
    p => p.FirstName == "FooBar") 
    .Where(p => p.ID == SomeId) 
    .Execute(); 
+0

На самом деле ваша версия не компилируется, поэтому я предполагаю, что первая версия с' == 'для обновления должна работать? – Earlz

+0

Вероятно, используется '==', потому что деревья выражений не поддерживают назначение. – user7116

+0

Хорошо, это не ошибка, но это не работает. База данных не изменена или ничего – Earlz

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