У меня есть следующая проблема - или, скорее, срочная потребность в ценном совете - с Microsoft MVC. Определенное действие от клиента приводит к созданию:
- Примечание в таблице Примечания
- Запись в таблице для HourRegistrations
- Запись в журнале изменений для билетов
Я использую сервисный уровень для бизнес-действий и репозитории для CRUD-действий. Проблема в том, что мне иногда нужно соединять объекты из разных DataContexts, поэтому я предполагаю, что я использую некорректный дизайн. Недавно мы начали удалять всю бизнес-логику из наших контроллеров и репозиториев, и это одна из первых вещей, с которыми я сталкиваюсь.
Пример:
BLogic.AddRemarks(Ticket t, ...)
{
Remark r = _remarksRepository.Create();
r.Ticket = t;
_remarksRepository.Add(r);
_remarksRepository.Save();
}
Это запускает kBOOM, так как Ticket выбирается в контроллере с использованием репозитория. Поэтому Remark r и Ticket t не используют один и тот же контекст данных.
Я могу изменить сигнатуру метода и предоставить int TicketId, но это не так. Кроме того, у меня возникают похожие проблемы в дальнейшем.
Мои репозитории создаются в конструкторе класса обслуживания. Возможно, я должен создать их в начале метода? Даже тогда я должен часто передавать идентификаторы вместо реальных объектов.