0

这个类来自http://wiki.fluentnhibernate.org/Getting_started 它有一些逻辑,我认为这违反了单一责任原则,你怎么看,你会如何解决这个问题?

困扰我的另一件事是为什么在 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);
  }
}
4

1 回答 1

1

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

正如您所提到的,我会在我的收藏中从 IList<> 更改为 IEnumerable<> 并将设置器设为私有(用于收藏)。这不是 nhibernate 处理的问题。在我看来,使用这些“添加”方法是处理模型上的集合的首选方式(关于此的博客文章)。

于 2010-01-18T10:01:49.243 回答