【问题标题】:WPF MVVM - create model from databaseWPF MVVM - 从数据库创建模型
【发布时间】:2011-02-04 13:12:35
【问题描述】:

我想知道什么是适合这种情况的解决方案。

我在 WPF 应用程序 Caliburn.Micro 框架中使用。我需要访问 SQL Compact DB。 在数据库访问中,我使用 LINQ TO SQL。

例如在视图中我有组合框控件或列表框控件。 我需要从 DB 中加载这些控件的项目。

所以我创建了访问数据库的简单类。

[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 操作。例如将一些对象/数据保存到数据库中。

感谢您的建议。

【问题讨论】:

    标签: wpf database caliburn.micro


    【解决方案1】:

    这看起来不错,在ConfigureSpiritUsers 你引用SettingsDbManager,这是在哪里定义的?这应该是DbManager 吗?

    真的,DbManager 是一个SpiritUserRepository,并且可以包含您的其他 CRUD 操作作为接口和具体实现上的方法。只要您的视图模型始终反对抽象,那就没问题了。

    此外,您可以在一行中使用this.SpiritUsers = new BindableCollection(users) 填充SpiritUsers 集合。我还将 SpiritUsers 的类型设为IObservableCollection&lt;Spirit_User&gt;,或者更好的是抽象为Spirit_User(即ISpiritUser)。

    【讨论】:

    • SettingsDbManager 是错误的,它是 DbManager,我更正了。是的,视图模型类始终使用相同的数据库方案。好的,我执行你的建议,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多