Если у меня есть модель домена, у которой есть идентификатор, который сопоставляется со столбцом идентификаторов SQL Server, как выглядит POCO, содержащий это поле?
Кандидат 1: позволяет любому установить и получить идентификатор. Я не думаю, что мы хотим, чтобы кто-либо устанавливал идентификатор, кроме Repository, из таблицы SQL.
public class Thing {
public int ID {get;set;}
}
Кандидат 2: Позволяет кому-либо устанавливать идентификатор при создании, но мы не узнаем идентификатор до тех пор, пока не создадим объект (фабрика создает пустой объект Thing, где ID = 0, пока мы не сохраним его). Как бы мы установили идентификатор после сохранения?
public class Thing {
public Thing () : This (ID: 0) {}
public Thing (int ID) {
this.ID = ID
}
private int _ID;
public int ID {
get { return this.ID;};
}
Кандидат 3: Методы для установки идентификатора?
Каким-то образом нам нужно было бы разрешить хранилищу устанавливать идентификатор, не позволяя потребителю изменить его. Есть идеи? Это лай не на то дерево? Отправляем ли мы объект в хранилище, сохраняем его, выбрасываем, затем создаем новый объект из загруженной версии и возвращаем его как новый объект?