Entity Framework дополняет мои текстовые поля, хотя они не имеют фиксированной длины - PullRequest
6 голосов
/ 03 апреля 2012

Я строю сайт MVC3, используя Entity Framework 4, и у меня проблема с полями фиксированной длины.

Когда я смотрю на мой код во время отладки, он показывает, что MyEntity.Title="Hello name " с добавленным заголовкомдо максимальной длины поля.

Обычно речь идет о наличии фиксированной длины поля в файле EDMX или использовании типа данных char в базовой базе данных, а не varchar.. В этом случае нииз них является правильным, однако возможно, что проблемные поля изначально были фиксированной длины.Я вручную изменил каждое поле в EDMX (и модель была регенерирована), и поля никогда не были фиксированной длины в базе данных (которая была отправной точкой для приложения), поэтому я предполагаю, что необходимость заполнения полейхранится где-то в конфигурации Entity Framework и не обновлялся.

Проблема возникает в новых записях, когда они добавляются в базу данных - при создании объекта заголовок будет правильным, когда он создается избаза данных дополняется.

Что мне нужно сделать, чтобы избавиться от отступов, которые действительно портят мои сравнения строк, если я не урежу все?

Ответы [ 3 ]

5 голосов
/ 05 апреля 2012

Оказывается, что в .EDMX-файле дополненные файлы все еще были перечислены как nchar. Это не было видно в редакторе моделей, единственный способ изменить его - щелкнуть правой кнопкой мыши модель в Visual Studio и выбрать «открыть с помощью ...», а затем использовать редактор XML. Оскорбительные поля выглядели так:

<Property Name="MyProperty" Type="nchar" Nullable="false" MaxLength="50" />

Изменение Type на nvarchar и повторный запуск шаблона, казалось, решили проблему.

3 голосов
/ 03 апреля 2012

Существующие поля не обновляются в модели при обновлении из базы данных.Необходимо либо удалить объекты из модели, либо вручную изменить эти поля на новые значения.

Проверьте типы свойств в браузере моделей и убедитесь, что они правильные.

0 голосов
/ 03 апреля 2012

Измените поле Заголовок, чтобы свойство фиксированной длины было установлено равным true.Вероятно, по умолчанию оно отсутствует:)

Убедитесь, что вы сначала изменили базу данных, а затем обновили свой edmx.

...