Свойство 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; } 
    }