MVC3中的POCO类和ViewModel

use*_*196 3 c# poco ef-code-first asp.net-mvc-3

我不是一个经验丰富的MVC3开发人员,但我想成为.我熟悉POCO类和ViewModels,因为前者描述了数据库的每个类,后者用于mvc3中的强类型视图.对于经验丰富的开发人员来说,我的问题并不复杂,但我对此感到有些困惑.

问题是,我有一个包含三个项目的解决方案;

  1. 我在其中编写了POCO类的Model类库.这是一个例子:

.

public class Service
    {
        [Key]
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
        public int ServiceID { get; set; }
        //------------------------------------------------------------//
        [Required, MaxLength(30)]
        [LocalizedAttribute("Name")]
        public string Name { get; set; }
        //------------------------------------------------------------//
        [MaxLength(100)]
        [LocalizedAttribute("Description")]
        public string Description { get; set; }
        //------------------------------------------------------------//
        [Required]
        public long ModifiedByUserID { get; set; }
        [ForeignKey("ModifiedByUserID")]
        public virtual User OperatorUser { get; set; }
        //------------------------------------------------------------//
        [Required, MaxLength(10)]
        public int ModifiedDate { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)
  1. 存储库和UnitOf Work类库

  2. MVC应用程序

现在,我是否正确地解决了POCO课程?(我当然使用EF Code First生成数据库)如果是,那么它们也被推断为ViewModels吗?我用它们来生成强类型视图.

定义POCO类和ViewModel的最佳和实际标准方法是什么?

我很感激任何善意的指导,

mat*_*mmo 6

说实话,这取决于项目的规模.

如果你看一下大多数微软的例子,他们只是将他们的POCO用作模型,因为他们的例子是小项目.

但是,如果您正在开发企业级应用程序附近的任何东西,那么您真的不应该使用POCO作为模型.应该明确区分关注点.严格来说,您的Web项目甚至不应该知道这些场景中的POCO对象,典型的实现是POCO和View Model都可以实现和查看的通用接口.这样可以节省您将POCO对象暴露给Web层的过程.