SOLID SRP和FluentNhibernate实体

时间:2010-01-15 15:56:19

标签: nhibernate fluent-nhibernate solid-principles

此课程来自http://wiki.fluentnhibernate.org/Getting_started 它有一些逻辑,我认为这违反了Single Responsibility Principle,您如何看待,您将如何解决这个问题?

困扰我的另一件事是为什么在nhibernate中总是使用IList而不是IEnumerable,它的功能较少?

public class Store
{
  public virtual int Id { get; private set; }
  public virtual string Name { get; set; }
  public virtual IList<Product> Products { get; set; }
  public virtual IList<Employee> Staff { get; set; }

  public Store()
  {
    Products = new List<Product>();
    Staff = new List<Employee>();
  }

  public virtual void AddProduct(Product product)
  {
    product.StoresStockedIn.Add(this);
    Products.Add(product);
  }

  public virtual void AddEmployee(Employee employee)
  {
    employee.Store = this;
    Staff.Add(employee);
  }
}

1 个答案:

答案 0 :(得分:1)

在我看来,这并不违反SRP原则。而且,正如Paco所说,它仍然是POCO类。 POCO并不意味着对象应该只包含数据。

然而,正如你所提到的,我会改变IList&lt;&gt;到IEnumerable&lt;&gt;在我的收藏品上,让私人收藏家(收藏品)。对于nhibernate来说,这不是一个问题。在我看来,使用这些“添加”方法是处理模型上集合的首选方法(blog post about that)。