gpt4 book ai didi

c# - MVC3 中的 POCO 类和 ViewModel

转载 作者:行者123 更新时间:2023-11-30 13:38:24 26 4
gpt4 key购买 nike

我不是经验丰富的 MVC3 开发人员,但我正在努力成为。我熟悉 POCO 类和 ViewModels,因为前者描述了数据库的每个类,后者用于 mvc3 中的强类型 View 。对于有经验的开发人员来说,我的问题并没有那么复杂,但我对此有点困惑。

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

  1. 我在其中编写 POCO 类的模型类库。这是一个例子:

.

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; }
}
  1. 存储库和 UnitOf Work 类库

  2. MVC 应用程序

现在,我是否正确处理了 POCO 类? (当然,我正在使用 EF Code First 生成数据库)如果是这样,它们是否也被推断为 ViewModels?我已使用它们生成强类型 View 。

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

我将不胜感激,

最佳答案

老实说,这取决于您的项目规模。

如果您查看大多数 Microsoft 示例,他们使用他们的 POCO 作为模型只是因为他们的示例是小型项目。

但是,如果您正在开发任何接近企业级应用程序的东西,您真的不应该使用您的 POCO 作为模型。关注点应该明确分离。严格来说,您的 Web 项目甚至不应该知道那些场景中的 POCO 对象,典型的实现是 POCO 和 View 模型都可以实现和查看的公共(public)接口(interface)。这样可以避免将 POCO 对象暴露给 Web 层。

关于c# - MVC3 中的 POCO 类和 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16934696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com