Entity Framework 4.0 использует значение по умолчанию для базы данных - PullRequest
6 голосов
/ 22 июня 2010

Я использую Entity Framework 4.0

Во многих наших таблицах есть столбец с именем RowID, используемый администратором базы данных для отслеживания материала. Столбец NON NULLABLE содержит значение по умолчанию для базы данных, которое сопоставляется с функцией.

Проблема в том, что модель EDMX требует, чтобы это свойство имело значение для сущности, что затрудняет построение объекта.

Я прочитал много постов по настройке файлов EDMX и SSDL вручную, чтобы сделать эту работу. Это невозможно для нашей команды.

Есть ли лучшее решение этой проблемы, кроме как сделать столбец NULLABLE в базе данных? Меня не волнует возвращение значения, я просто хочу, чтобы база данных могла установить его самостоятельно.

Ответы [ 2 ]

6 голосов
/ 11 февраля 2011

Вы должны установить StoreGeneratedPattern = "Computed" непосредственно в SSDL (XML за моделью).

1 - Щелкните правой кнопкой мыши модель

2 - выберите «Открыть с помощью» => Xml Editor

3 - Найдите отображение одной из таблиц в разделе «Содержимое модели»

4 - добавить атрибут StoreGeneratedPattern = "Computed" в столбец RowID

5 - Произведите глобальную замену файла, чтобы каждая таблица имела определение RowID с StoreGeneratedPattern = "Computed"

Примечание: Если вы используете мастер обновления модели, вам нужно будет вручную обновить XML снова. Моя рекомендация: не используйте мастер и не сохраняйте исходные и измененные строки xml в отдельном текстовом файле, чтобы они были доступны для глобальной замены после запуска мастера.

Для получения дополнительной информации обратитесь к этой статье: http://msdn.microsoft.com/en-us/library/dd296755(v=vs.90).aspx

2 голосов
/ 22 июня 2010

Если RowID никогда не нужно читать или записывать в контексте вашего приложения, тогда он вообще не входит в вашу Entity Model. Просто удалите его из вашей Entity Model с помощью Designer (щелкните правой кнопкой мыши> Delete) и позвольте базе данных управлять этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...