У меня есть проблема, которую я не знаю, как решить, когда предполагается использование DDD и использование C # / EF Core.Упрощенная ситуация: у нас есть 2 агрегата - Товар и Склад .Каждый из них имеет свою идентификацию с помощью ExternalId (Guid), чтобы идентифицировать его снаружи (FE и т. Д.), Что также рассматривается как идентификация его домена.У него также есть база данных Идентификатор, который идеализирует его внутри модели баз данных - модель Entity и модель Db того же класса, что и EF Core, позволяют использовать закрытые поля - только ExternalId и обязательные поля открыты.Сущность (в смысле DDD и EF Core) содержит довольно много бизнес-логики и методов, строго связанных с объектом.В общем, я следую шаблону из примера eShop / eShopOnContainers.
Элемент назначен на склад, и при создании элемента нам нужно передать склад на его конструктор.
Правильно ли передать полный складОбъект для конструктора Item (но также и для других методов, которые определяет Item):
public Item(Warehouse warehouse,..)
или я должен передавать только по идентификатору базы данных:
public Item(long warehouseId,..)
У меня есть проблема по этому поводу, потому чтоС одной стороны, я прочитал, что агрегаты не должны ссылаться на другие агрегаты, но, с другой стороны, при использовании Datbase DB утечка деталей реализации (персистентность объекта в реляционной БД) в модель предметной области, которая, по моему мнению, не должна происходить.
Использование ExternalId:
public Item(Guid warehouseId,..)
не решает проблему, поскольку фактические отношения в db не основаны на ней.
Каково ваше мнение?Я немного озадачен.