【发布时间】:2014-03-01 06:19:24
【问题描述】:
根据我的阅读,我知道我们应该始终将视图模型传递给视图。但是,有时此视图模型与 EF 模型完全相同或几乎相同。是否可以接受或有任何解决此问题的方法(重复代码)?
例如,如果我有这个 EF 模型:
class UserModel
{
string id {get;set}
string name {get;set}
string address {get;set}
string phone {get;set}
string website {get;set}
}
视图模型应该如何......像这样:
class UserViewModel
{
string name {get;set}
string address {get;set}
string otherobject {get;set}
}
或者像这样:
class UserViewModel
{
UserModel user;
string otherobject {get;set}
}
使用选项#1,属性会重复...并且在另一个视图模型中它们将再次重复。而且我需要在每个视图模型上重复所有数据注释。但是,我只发送我需要的属性。
使用选项#2,没有重复,但我传递了很多我不需要的属性。
最后一个选项是根据需要混合选项#1 和选项#2……但我不喜欢这个选项,因为缺乏共同的标准。有时属性将在视图模型中定义和数据注释,有时在 EF 模型中。
我希望有一个我看不到的选项 #4...?
谢谢。
【问题讨论】:
-
只使用最简单的,并且对特定情况最有意义。力求简单和可读性。如果它使代码更难理解,那么僵化是没有意义的。
标签: c# asp.net-mvc entity-framework viewmodel