Сгенерированные системой целочисленные идентификаторы объектов с использованием репозиториев в стиле DDD, сначала с базой данных EF

Мы внедряем систему на основе DDD в среде C # /. NET / EF, ориентированной на базы данных / SQL Server. Наши доменные сущности отделены от созданных EF сущностей с репозиториями, отвечающими за работу с EF и его сущностями. Я хотел бы иметь сгенерированные системой (а не сгенерированные базой данных / автоинкрементные) идентификаторы для вновь созданных сущностей. Естественный выбор - использовать GUID, но этому есть сопротивление из-за размера базы данных. Предпочтительно иметь int ID.

NHibernate имеет механизм HiLo, который я использовал в прошлом, но похоже, что в EF для него нет аналога (или, по крайней мере, готового к производству аналога).

Какие подходы позволяют иметь уникальный целочисленный идентификатор, сгенерированный системой, с EF database-first на SQL Server?


person boris    schedule 19.06.2013    source источник


Ответы (1)


Нет, Entity Framework не поддерживает идентификаторы, сгенерированные системой. Если вы хотите, вам придется реализовать это самостоятельно, возможно, переопределив SaveChanges в производном DbContext, но я бы не рекомендовал вам идти по этому пути.

person Massimiliano Peluso    schedule 19.06.2013
comment
Не совсем уверен, что вы имели в виду в своем первом предложении ... Похоже, вы предлагаете использовать идентификатор, сгенерированный базой данных, и это именно то, чего я пытаюсь избежать из-за проблем с использованием этого подхода с шаблоном Unit of Work . - person boris; 19.06.2013
comment
comment
Поговорим о редактировании на 180 градусов :) Я не думаю, что будет правильным утверждать, что EF не поддерживает сгенерированные системой идентификаторы - очевидно, поддерживает и отлично работает с GUID. Это просто не помогает с генерацией уникальных целочисленных идентификаторов. - person boris; 20.06.2013
comment
Я не говорил о GUID и рекомендовал бы использовать GIUD только в случае крайней необходимости. Вы должны были рассказать нам больше о проблеме, с которой вы сталкиваетесь в своей единице работы, потому что я не вижу никаких проблем с использованием идентификатора, сгенерированного БД, с шаблоном единицы работы - person Massimiliano Peluso; 20.06.2013
comment
См. Ссылку, которую я разместил выше. - person boris; 20.06.2013