Код: Выделить всё
public class Customer
{
private Customer() { }
public Customer(int id, string name) { /* ...populate properties... */ }
public int Id { get; private set; }
public string Name { get; private set; }
// and so on...
}
Но что, если вам нужно присоединить объект, не загружая его (очень распространенная вещь):
Код: Выделить всё
var customer = new Customer { Id = getIdFromSomewhere() }; // can't do this!
myContext.Set().Attach(customer);
Как можно справиться с этим несоответствием между языком и DDD?
Идеи:
- сделать идентификатор общедоступным (и сломать DDD)
- создать конструктор/метод для заполнения фиктивного объекта (не имеет смысла)
- использовать отражение («чит»)
- ???
Как вы справляетесь с этим сценарием?
PS Я провел простой тест, и создание миллиона экземпляров с использованием отражения занимает около 10 секунд. Таким образом, по сравнению с обращением к базе данных или отражением, выполняемым EF, дополнительные накладные расходы незначительны.
Подробнее здесь: https://stackoverflow.com/questions/440 ... ficing-ddd
Мобильная версия