Свойство Entity RIA/EF4, отображаемое в NOT NULL nvarchar - пустая строка
Фон:
- Entity Framework 4
- Silverlight 4
- Услуги RIA
- MSSQL Server 2008
У меня есть объект, у которого есть свойство String с именем Description.
В базе данных он отображается на NOT NULL NVARCHAR(200)
.
Проблема:
Когда я пытаюсь вставить новую строку этого объекта, это то, что я делаю:
MyExampleEntity entity = new MyExampleEntity()
{
Name = "example",
Description = "" // NOTE THIS LINE!
};
DatabaseContext db = new DatabaseContext();
db.MyExampleEntities.Add(entity);
db.SubmitChanges();
Это, однако, вызывает исключение, говорящее "The Description field is required."
Вопрос:
Не следует ли "пустая строка" просто: строка с нулевыми символами?
Я считаю, что только Description = null
следует рассматривать как предоставление без значения.
- Почему моя строка, которая имеет значение (хотя его длина равно 0), считается как будто я опустил значение?
- На каком уровне происходит это преобразование? В RIA, на EF или в MSSQL?
- Есть ли способ сделать описание нулевым значением, когда я устанавливаю
Description to ""
и вызывают исключение, когда Description = null
(не имеет значения)?
Ответы
Ответ 1
Это, по-видимому, является признаком платформы Entity Framework.
Связанная статья
Для преодоления этого могут быть использованы некоторые аннотации данных:
[MetadataType(typeof(Report_META))]
public partial class Report
{
}
public partial class Report_META
{
[Required(AllowEmptyStrings = true)]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public object Note { get; set; }
}