在POCO实体中使用一些常用方法是不是很糟糕?

时间:2011-05-18 20:29:36

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

在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
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

虽然我同意maxlego认为POCO课程应尽可能简单,但我不确定EF Code First实体应该是POCO。

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

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

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

我还建议使用POCO视图模型,而不是直接将EF实体传递给视图,特别是如果你开始向它们添加逻辑。