ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Я ответил на свой вопрос ссылкой на ответ на аналогичный вопрос. Я соглашусь с этим ответом, как только мне позволено (пока никто не придет с лучшим ответом).ASP.NET MVC 2 RC2 с привязкой к NVARCHAR NOT NULL
У меня есть столбец базы данных, определяемый как NVARCHAR(1000) NOT NULL DEFAULT(N'')
- другими словами, текстовый столбец с ненулевым значением со значением по умолчанию пустым.
У меня есть класс модели, сгенерированный конструктором классов Linq-to-SQL, который правильно идентифицирует свойство как , а не nullable.
У меня есть TextAreaFor
на мой взгляд на это имущество. Я использую UpdateModel
в своем контроллере для извлечения значения из формы и заполнения объекта модели.
Если я просматриваю веб-страницу и оставляю текстовую область пустой, UpdateModel
настаивает на том, чтобы установить свойство NULL
вместо пустой строки. (Даже если я установил значение пустым в коде перед вызовом UpdateModel
, он все еще перезаписывает это с помощью NULL
). Это, конечно же, приводит к сбою последующего обновления базы данных.
Я мог проверить все такие свойства для NULL
после вызова UpdateModel
, но кажется, что смешно - конечно, должно быть лучше?
Пожалуйста, не говорите мне, мне нужна специальная вставка для такого простого сценария ...!
Кроме того, я не знаю, как это выглядит, чтобы обозначить строковый тип «not null», который невозможен, строка является ссылочным типом, она может быть нулевой. Что бы это было, если не было нулевого? Пустая строка? Конечно, string.empty является одним из вариантов, но Framework не создает пустые строки по умолчанию, когда вы это делаете, например, строку MyString; – mare
@mare: так как я использую конструктор VS2008 «Linq to SQL Classes» для создания моего класса модели, у него есть пользовательский интерфейс, который позволяет мне просматривать классы в виде «диаграммы базы данных». Благодаря этому я могу проверить свойства различных таблиц и столбцов, и именно там я вижу, что он понимает, что это столбец с непустым значением. Я не понимаю, почему это не может быть отражено в сгенерированном классе (и, действительно, я не понимаю, почему значение по умолчанию тоже не может быть отражено!). –
Необходимо было бы неявно знать, что, когда вместо столбца SQL с нулевым значением замените значения по умолчанию на string.Empty. Я понимаю, что это может быть полезно в вашем случае и во многих других случаях, но, видимо, (к сожалению) это не работает. – mare