Хотелось бы услышать, что подходит для этой ситуации.WPF MVVM - создать модель из базы данных
Я использую приложение WPF Caliburn.Micro framework. Мне нужно иметь доступ к SQL Compact DB. В доступе к DB я использую LINQ TO SQL.
Например, у меня есть элемент управления comboBox или элемент управления listBox. Мне нужно загрузить элементы этих элементов управления из базы данных.
Поэтому я создаю простой класс при доступе к БД.
[Export(typeof(IDbManager))]
public partial class DbManager : IDbManager
{
public IList<Spirit_Users> LoadSpiritUsers()
{
var result = from u in _dc.Spirit_Users orderby u.Nick select u;
return result.ToList();
}
}
Я вставляю этот класс с помощью MEF для просмотра модели. Об использовании метода из класса при доступе к БД в моем классе модели просмотра при загрузке элементов в comboBox.
[Export(typeof(ILogOnViewModel))]
public class LogOnViewModel : Screen, ILogOnViewModel,
IPartImportsSatisfiedNotification
{
[Import]
internal IDbManager DbManager { get; set; }
//this property is bind on listbox or comboBox
public BindableCollection<Spirit_Users> SpiritUsers
{
get { return _spiritUsers; }
set
{
_spiritUsers = value;
NotifyOfPropertyChange(() => SpiritUsers);
}
}
private void ConfigureSpiritUsers()
{
//load items from comboBox or listBox
var users = SettingsDbManager.LoadSpiritUsers();
//add to the collection which is binded on control in view
if (users.Count > 0)
{
foreach (var user in users)
{
SpiritUsers.Add(user);
}
}
}
protected override void OnActivate()
{
ConfigureSpiritUsers();
base.OnActivate();
}
}
Я не знаю, если мое решение является правильным и наиболее подходящим в scenarion WPF приложения с MVVVM.
Также мне нужно создать операцию CRUD из класса модели вида в базу данных. Например, сохраните некоторые объекты/данные в базе данных.
Благодарим за совет.
SettingsDbManager - ошибка, это DbManager, я исправляю его. Да класс модели просмотра всегда работает с той же схемой БД. Хорошо, я реализую ваши советы, спасибо. –