2009-05-22 4 views
10

В Linq To Sql, при обновлении одного из моих сущностей, Faculty, я создаю новый экземпляр объекта Faculty, затем инициализируя некоторыми свойств со значениями, предоставленными пользователем ,Linq To SQL Attach/Refresh Entity Object

Если я присоединю этот новый объект к набору объектов и отправлю изменения, то свойства, которые я не установил, принимают значение по умолчанию любого типа данных.

Как обновить новый объект, чтобы свойства, которые были установлены, сохраняли свои значения, а свойства, которые не были установлены, получают значения из базы данных?

Благодаря

+0

просто из любопытства, являются нулевыми типами «GUID»? – vidalsasoon

+0

Нет, они целые числа –

ответ

14

Пробовали ли вы

context.Refresh(RefreshMode.OverwriteCurrentValues, faculty);

после представить изменения, где context ваш Linq2Sql DataContext и faculty это сущность, которую вы хотите обновить?

+0

Я заметил, что также необходимо выполнить 'yourBindingSource.ResetCurrentItem();' если вы обновляете объект за пределами события CurrentChanged для источника привязки. – Dor

0

насчет извлечения объекта из базы данных, а затем изменив соответствующие значения, то представление обновления?

+0

Я поддерживаю некоторый код, который использует метод attach, и я не совсем уверен, почему он не был написан, чтобы делать то, что вы предлагаете для начала. –

+0

Я думаю, что он имеет в виду создание новой записи в таблице. – vidalsasoon

+0

О! Теперь я помню. Это потому, что есть поле timestamp, называемое версией. Выполнение того, что вы предложили, вызывает эту ошибку: изменилось значение члена «Версия» объекта типа «Факультет». Член, который вычисляется или генерируется базой данных, не может быть изменен. –