Entity Framework 4.1 Сохранение получателя - PullRequest
0 голосов
/ 01 октября 2011

Много лайков для EF4.1, но я застрял при этом!

Я хочу закончить с таким классом, где EF обрабатывает оба свойства, и они оба находятся в базе данных.

public class myClass 
{
    public int priority { get; set; }
    public string status { get { return priority > 10 ? "Low" : "High" } }
}

1) Когда я генерирую модель из базы данных, мне нужно каким-то образом вставить вычисление статуса в его свойство.
2) Надеюсь, решение сработает, когда я восстановлю свою модель из базы данных.

1 Ответ

0 голосов
/ 02 октября 2011

Вы не можете сохранить такое свойство. Это бизнес-логика (вычисляемое свойство). Если вы хотите сохранить его, свойство должно иметь setter, потому что EF попытается установить его при материализации сущности, загруженной из базы данных, но как только вы выставите setter, ваш getter не будет иметь смысла, и эту логику придется перенести в другое место.

Edit:

Обходной путь - обернуть вашу Status логику в метод расширения помощника:

public static IsHighPriority(this IQueryable<MyClass> query)
{
     return query.Where(x => x.Priority > 10);
}

Теперь вы можете использовать его в запросе как:

var query = from x in context.MyClasses.IsHighPriority()
            where ...
            select x;
...