Какое-то время я думал о том, как работать с объектами, которым в базе данных присвоены идентификаторы.
Типичный объект, представляющий сущность таблицы, может выглядеть так:
public class Test
{
public int Id { get; private set; }
public string Something { get; set; }
}
Предположим, мы хотели бы использовать этот объект для вставки, извлечения и обновления объектов в базе данных. Что касается получения и обновления, у нас нет проблем, так как поле Id всегда имеет значение.
Однако, если мы хотим вставить новый объект типа Test в базу данных, поле Id все равно должно иметь значение. Мы могли бы просто использовать «0», поскольку он вряд ли будет использоваться в качестве ключа базы данных, но на самом деле это не очень хорошая конструкция.
Аналогичным образом, если мы инвертируем ситуацию и сделаем свойство Id допускающим значение NULL, мы могли бы использовать NULL для объектов, которым база данных еще не присвоила идентификатор. Однако теперь возможно, что объект, полученный из базы данных, не имеет идентификатора (как это допускается конструкцией класса, но не конструкцией базы данных).
Есть какие-нибудь хорошие идеи о том, как создать хороший дизайн для этой проблемы?