Где инициализировать DBContext (DB = new DBContext()
), чтобы не нарушать принципы и правила MVVM-паттерна в WPF приложении?
Приложение состоит из главного окна MainWindow с управляемыми(дочерними) UserControl:
<Window x:Class="TestManager.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestManager.View"
xmlns:vm="clr-namespace:TestManager.ViewModel"
mc:Ignorable="d"
Title="Склад" Height="600" Width="800">
<Window.Resources>
<DataTemplate DataType="{x:Type vm:ViewModelPeople}">
<local:ViewPeople/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ViewModelMainLogs}">
<local:ViewMainLogs/>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentPresenter x:Name="Pages" Content="{Binding SelectedViewModel}"/>
</Grid>
</Window>
ViewModelMainWindow.cs:
class ViewModelMainWindow : ViewModelBase
{
/// <summary>
/// Выбранный UserControl
/// </summary>
private object selectedViewModel;
public object SelectedViewModel
{
get { return selectedViewModel; }
set { selectedViewModel = value; OnPropertyChanged("SelectedViewModel"); }
}
public ViewModelMainWindow()
{
SelectedViewModel = new ViewMainLogs(); //Инициализация при запуске приложения
}
}
P.s. насколько правильно и логично использовать один экземпляр DBContext для всего проекта?
В MVVM база данных — это модель. Соответственно и инициализировать её нужно там. И раз работа с базой данных обычно медленная, а EF не многопоточный, то инициализировать нужно в том потоке, в котором вы будете работать с базой (и это должен быть не главный поток).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Требуется изменить размеры, а именно высоту(height)Возможно ли? так просто он не меняет
Как в приложении сделать combobox на считку/запись 2-х байтов в "Hex" перевернутом по смещению 0x324 из файла(Перевернутый Hex значит например: 300 десятичное...
Здравствуйте! При создании приложения в WPF у меня возникла одна проблема, а именно: по нажатию клавиши Edit в главном окне MainWindow я хочу менять...