我想听听什么是适合这种情况的解决方案。
我在 WPF 应用程序 Caliburn.Micro 框架中使用。我需要访问 SQL Compact DB。在数据库访问中,我使用 LINQ TO SQL。
例如在视图中我有组合框控件或列表框控件。我需要从数据库中加载这些控件的项目。
所以我创建了访问数据库的简单类。
[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 注入这个类来查看模型类。在我的视图模型类中使用数据库访问类中的使用方法将项目加载到组合框。
[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();
}
}
我不知道我的解决方案是否正确并且最适合带有 MVVVM 的场景 WPF 应用程序。
我还需要创建从视图模型类到数据库的 CRUD 操作。例如将一些对象/数据保存到数据库中。
感谢您的建议。