Согласно MVVM, в моделях не должно быть логики. Давайте предположим, что есть модель лица, которая содержит два свойства:Согласно шаблону MVVM - кто несет ответственность?
public class Person {
public string Costcenter { get; private set; }
public User User { get; private set; }
}
Сам объект пользователя содержит другой объект, лицо, которое среди других свойств содержит свойство «Costcenter».
public class User {
public OtherPerson Person {get; private set; }
}
public class OtherPerson {
public string Costcenter {get; private set; }
}
OtherPerson это совершенно другой класс, чем Person
Сейчас мой актуальный вопрос: Кто будет нести ответственность за проверку, если Costcenter в Person равно Costcenter в OtherPerson?
Person.Costcenter == Person.User.OtherPerson.Costcenter
Есть не так много возможностей:
- ViewModel отвечает
- Небольшие куски кода могут быть реализованы внутри модели
- Проверка может быть реализован как свойство геттерного
public ViewModel(){
[...]
public bool IsCostcenterEqual(Person p){
return p.Costcenter == p.User.OtherPerson.Costcenter;
}
}
public class Person {
public string Costcenter { get; private set; }
public User User { get; private set; }
public bool CostcenterEquals(){
return this.Costcenter == this.User.OtherPerson.Costcenter;
}
}
public class Person {
public string Costcenter { get; private set; }
public User User { get; private set; }
public bool IsCostcenterEqualProperty{
get{
return this.Costcenter == this.User.OtherPerson.Costcenter;
}
}
}
На данный момент я не уверен, если это просто вопрос мнения, но я ищу лучший * способ решения этой проблемы
*) наилучший = лучший монтаж, связанный с шаблоном MVVM
Edit 1
Я забыл упомянуть, что я хотел бы использовать свои модели для EF (если это имеет значение)
«Согласно MVVM, в моделях не должно быть логики». Кто вам сказал? Я бы сказал, что должна быть вся бизнес-логика. – Clemens
Откуда у вас возникла мысль, что модель не должна содержать никакой логики? Весь уровень бизнес-логики находится в пределах модели. –
Ahhh MVVM. Я думаю, что есть 7 разных мнений о том, что такое MVVM. Некоторые люди думают, что DTO - это модели (я не знаю). Некоторые думают, что ViewModel также является моделью (ну, что будет VVM). См. Это разумное обсуждение MVVM https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/MVVM-Best-Practices –