【问题标题】:Is it bad to have some common methods in POCO entities?在 POCO 实体中有一些常用方法是不是很糟糕?
【发布时间】:2011-08-28 09:11:58
【问题描述】:

在 Asp.NET MVC 3 + EF CF 项目的 POCO 实体中有一些通用功能是不好的设计吗? 假设我需要函数来获取实体属性生成的下一条记录代码:

public class Warehouse  {
    public string ReceivingRecordCodeFormat { get; set; }
    public int ReceivingRecordCodeNextNumber { get; set; }

    #region functions

    public string GetNextReceivingRecordCode()
    {
        return ...
    }

    #endregion
}

【问题讨论】:

    标签: asp.net-mvc-3 poco ef-code-first


    【解决方案1】:

    虽然我同意 maxlego 的观点,即 POCO 类应该尽可能简单,但我不确定 EF Code First 实体应该是 POCO。

    我的做法是在该实体类中包含仅影响单个实体的逻辑。特别是如果可能从多个服务(或多个控制器,如果您将它们用作服务层)调用这些方法。否则,您的服务将不得不调用其他服务,如果您使用任何类型的 IoC 容器,这将导致服务之间的紧密耦合和循环引用问题。

    将逻辑放在实体中具有最大的重用潜力,而无需在多个地方重复代码。

    对于涉及实体集合的逻辑,我使用服务,而不是尝试使用实体类中的静态方法。

    我还建议使用 POCO 视图模型,而不是将您的 EF 实体直接传递给视图,尤其是当您开始向它们添加逻辑时。

    【讨论】:

      【解决方案2】:

      我建议让 POCO 尽可能简单,并为此类方法创建服务层。

      【讨论】:

        猜你喜欢
        • 2011-09-20
        • 1970-01-01
        • 2010-12-16
        • 2011-10-06
        • 2013-04-17
        • 2020-06-07
        • 1970-01-01
        • 2014-05-27
        • 1970-01-01
        相关资源
        最近更新 更多