C#实体框架更好的功能还是模型中的计算属性?

时间:2017-06-22 20:05:12

标签: c# asp.net-mvc entity-framework

您好我正在使用asp.net核心1.1 MVC和EF(代码优先)编写一个小型C#Web应用程序

我想知道什么是最好的工程选择。 让我们假设我有一个类,我需要使用一个或多个相关属性来计算某些东西;让我们举个例子:

class A
{
    public virtual int Id { get; set; }
    public virtual Collection<B> Bs { get; set; }    

    public int GetMaxB()
    {
        return Bs.Max( b => b.Num ); /*simple example, can be more complex */
    }
}

class B
{    
   public virtual int Id { get; set; }
   public virtual int Num { get; set; } 
}

那么,对于GetMaxB()(让我们考虑一个更复杂的函数,不仅仅是一行),最佳选择是什么?

  • 模型类中的函数
  • 模型类
  • 中生成的(NotMapped)属性
  • 控制器中的功能
  • 其他

2 个答案:

答案 0 :(得分:0)

您的逻辑可以是VM的一部分,您可能不希望它与模型混合,模型应该是具有属性的纯类。

答案 1 :(得分:0)

取决于财产的情况和性质。

像DiscountValue这样的计算属性(很少依赖其他属性)是Model类的一部分。

如果使用GetMaxB()的频率较低,那么它可以是Model中的一个函数。

如果GetMaxB()只是在A类中使用哪个集合类的原因,那么您可以认为单独提供的使用并不频繁。