У меня очень странная ситуация.У меня есть шаблон репозитория UOW.У меня есть слой домена, в котором находятся мои сущности, слой доступа к данным, который содержит dbcontext (UnitofWork) и репозитории для разных сущностей.У меня есть прикладной уровень, где у меня есть сервисы, к которым я обращаюсь для чтения и записи данных.Архитектура содержит в основном это с некоторыми DTO для обеспечения согласованности данных.У меня есть уровень пользовательского интерфейса с MVC5, где я внедрил все зависимости через Unity, и он прекрасно работает, если я создаю экземпляр каждой службы из конструктора контроллера.
У меня есть несколько служб, таких как GlobalAppSvc (реализовано из IGlobalAppSvc), SystemSettingAppSvc (ISystemSettingAppSvc) и т. Д. И т. Д. Чтобы упростить жизнь, я создал такой класс под названием ApplicationManager, как этот.
public class ApplicationManager
{
public ApplicationManager(ISystemSettingAppSvc systemSettingAppSvc, IBalanceAppSvc balanceAppSvc, IGlobalAppSvc globalAppSvc, IProfileAppSvc profileAppSvc)
{
SystemSettingAppSvc = systemSettingAppSvc;
BalanceAppSvc = balanceAppSvc;
GlobalAppSvc = globalAppSvc;
ProfileAppSvc = profileAppSvc;
}
public ISystemSettingAppSvc SystemSettingAppSvc { get; set; }
public IBalanceAppSvc BalanceAppSvc { get; set; }
public IGlobalAppSvc GlobalAppSvc { get; set; }
public IProfileAppSvc ProfileAppSvc { get; set; }
}
В моем Unity я зарегистрировал все службы и хранилища вместе с единицей работы
container.RegisterType<IUnitOfWork, WUnitOfWork>(new PerResolveLifetimeManager(), new InjectionConstructor());
container.RegisterType<IWUnitOfWork, WUnitOfWork>(new PerResolveLifetimeManager(), new InjectionConstructor());
Я создал BaseController
, расширив Controller
так, чтобы яне нужно разрешать диспетчер приложений в каждом контроллере, который я пишу.В базовом контроллере я разрешаю это ApplicationManager
как
public class BaseController : Controller
{
// GET: Base
public ApplicationManager ApplicationManager
{
get;
private set;
}
public BaseController()
{
ApplicationManager = UnityConfig.Container
.Resolve<ApplicationManager>();
}
}
Затем я могу войти в любой контроллер и расширить контроллер с помощью этого BaseController
, и у меня есть доступ к ApplicationManager.GlobalAppSvc.Methods()...
Моя проблема заключается в том, что всякий раз, когда происходит изменение данных, например, допустим, есть действие, которое выполняется для вычета баланса и сохранения изменений для конкретного пользователя.Когда я снова запрашиваю баланс пользователя, он все еще показывает неизменный баланс, однако баланс в базе данных вычитается, но служба не получает обновленные данные.Что я делаю неправильно?