При создании приложений WPF я склоняюсь к тому, чтобы ViewModel вставлял DbContexts в классы обслуживания при создании.
Однако все было бы намного чище, если бы я мог внедрить класс обслуживания в ViewModel. Но это привело бы к риску долгоживущих DbContexts, если пользователь слишком долго остается в одном и том же представлении.
Чтобы решить эту проблему, можно предварительно определить DbContextOptions
, а затем ввести его в сервис от ViewModel. А затем пусть служба инициализирует DbContext
только тогда, когда это необходимо, используя эти параметры. Это позволило бы тестировать через InMemory
и предотвратить долгоживущие контексты. Для меня это звучит как беспроигрышная ситуация ... За исключением того, что я никогда не видел, чтобы кто-нибудь еще делал это, что обычно является предупредительным знаком.
Я что-то пропустил? Это анти-паттерн или кодовый запах?