Какой подход использовать при хранении / обновлении данных для нескольких DbContex'ов?Сравнение производительности: и в каком случае когда использовать что:
using (var scope = new TransactionScope())
{
using (var context1 = new ItemContext(userOptions))
{
context1.Items.Add(item);
context1.SaveChanges();
}
using (var context2 = new OrderContext(orderOptions))
{
testOrder.ItemId = item.Id;
context2.Orders.Add(testOrder);
context2.SaveChanges();
}
if(testOrder.SunIsShining){
using (var context1 = new ItemContext(itemOptions))
{
item.SunIsShining= true;
context1.Items.Update(item);
context1.SaveChanges();
}
}
scope.Complete();
}
A.Пример выше с использованием области транзакции и изменением / обновлением записей между различными контекстами на одном физическом сервере.
B.Используйте сообщения.Например, после сохранения пользователя в БД.Служба сообщений о вызовах, которая вставляет информационные сообщения в очередь (записи информации об элементе).Затем ItemOrderProcessingService будет читать эту очередь каждые 10 секунд, принимая все новые записи в ней.И в партиях будет создавать заказы, возможно, при необходимости обновлять некоторые статусы элементов также в таблице элементов также в пакетах.(иметь логику для отката изменений при необходимости)
Когда использовать какой подход, каковы преимущества / недостатки?Например, если у нас ~ 2 тыс. транзакций в день, что довольно мало. Сколько транзакций в день нужно использовать, используя подход B. queue?