2012-01-26 2 views
1

Я использую RIA Services и EF Code Сначала создаю приложение, в котором сущности расширяются с использованием пользовательских свойств (каждый расширяемый объект имеет мешок свойств, который в основном является отношением один к другому с объектом Property).Проверка свойств NotMapped в EF Code First + Ria Services

Кроме того, был написан механизм генерации кода, который генерирует «обычные» свойства оболочки C# для каждого такого расширенного свойства. Благодаря этому весь механизм является гораздо более прозрачным для разработчиков

[NotMapped] 
    public string Version 
    { 
     get 
     { 
      return this.GetProperty(PropertyNameVersionConst) == null 
         ? null 
         : this.GetProperty(PropertyNameVersionConst).StringValue; 
     } 
     set 
     { 
      this.SetProperty(PropertyNameVersionConst, value);   
     } 
    } 

Возникает вопрос - можно ли использовать проверки атрибутов таких ([NotMapped]) свойства? На первый взгляд я не вижу причин, почему это не должно быть возможным.

[NotMapped] 
[Required] 
public string Version{...} 

Я столкнулся с проблемой, когда исключение проверки (на SaveChanges()) выбрасывают такое свойство с атрибутом Required, даже если собственность была установлена ​​в ненулевое значение.

ответ

1

Ну, после добавления виртуального модификатора к свойствам он начал работать правильно

[NotMapped] 
public virtual string Version 
{ 
    get 
    { 
     return this.GetProperty(PropertyNameVersionConst) == null 
        ? null 
        : this.GetProperty(PropertyNameVersionConst).StringValue; 
    } 
    set 
    { 
     this.SetProperty(PropertyNameVersionConst, value);   
    } 
} 

Любой мог остановиться на этом :)?

+0

У меня есть свойство value-type (struct) в моей модели, и хотя я помечал его как '[NotMapped]' EF все еще проверяет его значение перед сохранением. я также попробовал «виртуальный» модификатор, но все равно никаких шансов – sos00