Будет ли добавление CustomerID в Order Entity нарушать принципы DDD или базы данных для повышения производительности поиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Будет ли добавление CustomerID в Order Entity нарушать принципы DDD или базы данных для повышения производительности пои

Сообщение Anonymous »

Мы создаем систему, используя доменную дизайн (DDD) в C# (.net), и у нас есть связанная с производительностью проект. Заказ создан из принятого предложения . Проблема возникает, когда мы хотим отклонить заказ из заполнения клиента . Вот текущий код для этого: < /p>

Код: Выделить всё

public void RejectOrder(Guid orderId, string note)
{
var order = _offerDetails
.Select(offerDetail => offerDetail.Offers.FirstOrDefault(offer => offer.OrderId == orderId)?.Order)
.FirstOrDefault();

if (order == null)
{
throw new KeyNotFoundException("Order for this customer was not found.");
}

order.MarkAsRejected();
}
Это пересекает вложенную структуру _offerdetails → предложения → Order для поиска целевого порядка . По мере того, как эта коллекция растет, производительность становится проблемой.
Потенциальное решение, которое мы рассматриваем, - добавить CustomerId в объект Order и сохранить его напрямую. Это позволило бы прямой запрос заказа таблицы по customerid и orderid , сокращение потребности в тратрах. Или
концепция владения? < /li>
Нарушение каких-либо общих принципов нормализации или дизайна базы данных? introducing a redundancy like CustomerId in Order is a valid and pragmatic pattern in such cases.
EDIT
To clarify, we are using EF Core and currently access related entities through the domain model (i.e., Customer → OfferDetail → Offer → Order) in memory. Это преднамеренное и укоренено в нашем дизайне DDD, где клиент является корневым заполнителем. Проблема производительности связана не с соединением SQL, а скорее в памяти в памяти все более крупных коллекций. Мы рассматриваем денормализацию модели данных, добавив CustomerId в объект Order , поэтому мы можем обойти траверс и напрямую запросить заказа от customerId и OrderId . Мы хотим оценить, разбивает ли это границы совокупности или вводит неприемлемое избыточность в контексте DDD.

Подробнее здесь: https://stackoverflow.com/questions/796 ... design-pri
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»