SOLID SRP и FluentNhibernate сущности - PullRequest
       1

SOLID SRP и FluentNhibernate сущности

0 голосов
/ 15 января 2010

этот класс из http://wiki.fluentnhibernate.org/Getting_started в нем есть логика, и я думаю, что это нарушает Принцип единой ответственности , как вы думаете, как бы вы решили это?1006 * Еще одна вещь, которая меня беспокоит, - почему в 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 Ответ

1 голос
/ 18 января 2010

На мой взгляд, это не нарушает принцип SRP. И, как упоминал Пако, это все еще класс POCO. POCO не означает, что объект должен содержать только данные.

Я бы, как вы упомянули, изменил бы с IList <> на IEnumerable <> в моих коллекциях и сделал бы сеттеры частными (для коллекций). Это не проблема для nhibernate. Использование этих методов «add», на мой взгляд, является предпочтительным способом обработки коллекций в вашей модели ( сообщение в блоге об этом ).

...