RIA / EF4 Свойство сущности сопоставлено с NOT NULL nvarchar - пустая строка - PullRequest
10 голосов
/ 01 июля 2011

Справочная информация:

  • 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 Ответ

9 голосов
/ 01 июля 2011

Похоже, что это признак 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; } 
    }
...