Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
4年前关闭。
Improve this question
根据MVVM,模型内部不应有逻辑。假设有一个包含两个属性的Person模型:
用户对象本身包含另一个人员对象,该对象除其他属性外还包含属性“Costcenter”。
现在我的实际问题是:谁负责检查“人员成本中心”是否等于“其他人员成本中心”?
可能性不大:
ViewModel是负责的 可以在 模型中实现少量代码可以将检查实现为getter属性
目前,我不确定这是否只是一个见解,但我正在寻找解决此问题的最佳方法
编辑1
我忘了提到我想将我的模型用于EF(如果这很重要) 确定方法并坚持下去。在整个解决方案中保持一致。 无论采用哪种方法,请确保已正确分离各层。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
4年前关闭。
Improve this question
根据MVVM,模型内部不应有逻辑。假设有一个包含两个属性的Person模型:
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; }
}
现在我的实际问题是:谁负责检查“人员成本中心”是否等于“其他人员成本中心”?
Person.Costcenter == Person.User.OtherPerson.Costcenter
可能性不大:
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;
}
}
}
目前,我不确定这是否只是一个见解,但我正在寻找解决此问题的最佳方法
编辑1
我忘了提到我想将我的模型用于EF(如果这很重要)
最佳答案
正如其他答案和评论所示,这是一个引起很多热情和观点的话题。没有一种“正确”的方式来做到这一点。
您可能会认为模型只是一组DTO/POCO,或者您想称呼它们的任何一种。然后,您的持久性和业务逻辑层将驻留在ViewModel中。
您可以认为模型是一个持久层,仅负责持久化DTO,并且业务逻辑存在于ViewModel中。
您可能会认为ViewModel仅负责处理View逻辑(应用程序行为),并且Model中存在业务逻辑和持久性。
您可以担任...等职位。您可能会采用贫乏的数据模型方法;或丰富的数据模型方法等
没有正确的方法来处理此问题。失去了同样有效的方式。所有方法的两个关键点是:
关于c# - 根据MVVM模式-谁负责? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38369901/
10-13 06:51