Я хотел бы услышать, что является подходящим решением для этой ситуации.
Я использую в приложении WPF Caliburn.Micro Framework. Мне нужно иметь доступ к SQL Compact 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();
}
}
Я не знаю, является ли мое решение правильным и наиболее подходящим для сценариев WPF-приложения с MVVVM.
Также мне нужно создать операцию CRUD из класса модели представления в БД. Например, сохранить некоторый объект / данные в базе данных.
Спасибо за совет.