Entity Framework, несопоставленное свойство и динамические данные - PullRequest
1 голос
/ 26 апреля 2010

Я использую модель данных Entity Framework для управления веб-сайтом Dynamic Data, который используется пользователями для обновления данных.

Одна из сущностей содержит необнуляемое строковое свойство (Описание). В базе данных одна из строк имеет пустое описание (не пустое, а пустую строку). Когда я пытаюсь обновить описание, я получаю следующую ошибку проверки: «Это свойство не может иметь нулевое значение». Если я вручную обновлю описание в базе данных, а затем отредактирую свойство, оно будет работать как положено. Но как только я меняю описание в базе данных обратно на пустую строку, происходит ошибка проверки. Ошибка происходит в установщике описания.

Итак, я попытался добавить дополнительное строковое свойство CustomDescription, которое в основном заключает в себе описание, сделало Description в ScaffoldColumn (false) в метаданных объекта и добавило новое свойство в метаданные объекта.

    [ScaffoldColumn(true)]
    public string CustomDescription
    {
        get { return this.Description; }
        set {
            if (value == null)
            {
                value = string.Empty;
            }
            this.Description = value;
        }
    }

Однако что мне нужно добавить к этому свойству, чтобы оно отображалось на сайте динамических данных?

Ответы [ 2 ]

1 голос
/ 04 мая 2012

Проблема в том, что старое значение было пустой строкой в ​​поле, не допускающем нуля. По умолчанию фреймворк конвертирует его в ноль. Чтобы исправить ошибку, просто добавьте следующий атрибут в ваше поле:

[DisplayFormat(ConvertEmptyStringToNull = false)]
public object Description { get; set; } 
0 голосов
/ 12 марта 2011

В соответствующем классе метаданных просто назовите его, как если бы вы действительное поле:

    [MetadataType(typeof(MyClassMetadata))]
    public partial class MyClass
    {
        [ScaffoldColumn(true)]
        public string CustomString
        {
        return "foo";
        }
    }

public class MyClassMetadata
{

    [Display(Name = "Custom")]
    public object CustomString { get; set; }        
}
...