Структура сущностей СОЗДАЕТ против столбцов, не обнуляемых в БД SQL Server - PullRequest
1 голос
/ 27 декабря 2010

Я использую EFv4 для своего ORM, и я только что попытался вставить запись в таблицу, в которой несколько столбцов помечены как необнуляемые и имеют значение по умолчанию пустой строки (для столбцов типа nvarchar).Проблема в том, что EF не выбирает значения по умолчанию для этого столбца, и когда я создаю экземпляр моего объекта, но оставляю некоторые строковые свойства null, а затем пытаюсь сохранить это в таблице БД, возникает исключение (говоря, что я должен ослабить свое ограничениенастройки в наборе данных).

Таким образом, хотя значение по умолчанию для пустой строки работает в SQL Server Management Studio (если я оставлю столбец emtpy, он автоматически вставит строку emtpy), он не будет работать в EF.

Должен сказать, что я действительно заметил это раньше с uniqueidentifier столбцами первичного ключа, но теперь я вижу, что никакая информация о значениях по умолчанию столбца не превращает его в модель EF, независимо от того, что это за столбец.Кто-нибудь еще заметил это?какие-нибудь обходные пути?

Кроме того, если кто-нибудь знает, есть ли какие-либо улучшения в этом в последних CTP Feature EF?

Ответы [ 2 ]

3 голосов
/ 27 декабря 2010

Я бы не рассматривал это как проблему EF. L2S делает то же самое. Проблема заключается в том, что когда вы вставляете строку в таблицу, EF / L2S фактически включает столбец в операторе вставки со значением NULL. Когда вставка выполняется таким образом, ваши значения по умолчанию не используются.

Возможно, вам придется сделать то, что мы сделали в нашем DAL, и это заменить пустые значения значениями по умолчанию перед выполнением вставки.

0 голосов
/ 27 декабря 2010

Я обнаружил, что значения по умолчанию, которые я назначаю при создании своих таблиц в Management Studio, не превращаются в модель EF при выполнении «создания модели из базы данных», но если вы задаете значение по умолчанию в SQLсервер, а затем ТАКЖЕ установить значение по умолчанию в модели EF, затем, когда я создаю объекты, они приходят с теми значениями по умолчанию, установленными в объекте .... вы пробовали это?нужно отредактировать файл EDMX напрямую так:

<Property Type="String" Name="Listing" MaxLength="Max" FixedLength="false" Unicode="false" DefaultValue="" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...