Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf MVVM和DBContext—如何将其组合在一起?_Wpf_Mvvm_Ado.net Entity Data Model_Dbcontext - Fatal编程技术网

Wpf MVVM和DBContext—如何将其组合在一起?

Wpf MVVM和DBContext—如何将其组合在一起?,wpf,mvvm,ado.net-entity-data-model,dbcontext,Wpf,Mvvm,Ado.net Entity Data Model,Dbcontext,我试图遵循MVVM模式,但是我在这个问题上花了一些时间,谷歌搜索了很多,还检查了stackoverflow。。。到目前为止还没有找到有效的例子 基本上,我有一个简单的应用程序,希望检索数据并将其写入SQL server。这是我的密码: //模型 public class Visitor { public string ID { get; set; } public string FirstName { get; set; } public string LastNa

我试图遵循MVVM模式,但是我在这个问题上花了一些时间,谷歌搜索了很多,还检查了stackoverflow。。。到目前为止还没有找到有效的例子

基本上,我有一个简单的应用程序,希望检索数据并将其写入SQL server。这是我的密码:

//模型

public class Visitor
{
    public string ID { get; set; }


    public string FirstName { get; set; }

    public string LastName { get; set; }
}
//视图模型

public class VisitorViewModel : ViewModelBase
{
    public ObservableCollection<Visitor> _visitorDataCollection = new ObservableCollection<Visitor>();

    public ObservableCollection<Visitor> VisitorDataCollection
    {
        get { return _visitorDataCollection; }
        set { _visitorDataCollection = value; }
    }

    private string _firstName = "";
    private string _lastName = "";



    public string FirstName
    {
        get { return _firstName; }
        set
        {
            if (value != _firstName)
            {
                _firstName = value;
                OnPropertyChanged("FirstName");
            }
        }
    }

    public string LastName
    {
        get { return _lastName; }
        set
        {
            if (value != _lastName)
            {
                _lastName = value; 
                OnPropertyChanged("LastName");
            }
        }
    }

    public VisitorViewModel()
    {

    }
}
公共类VisitorViewModel:ViewModelBase
{
公共ObservableCollection_visitorDataCollection=新ObservableCollection();
公共可见收集访问者数据收集
{
获取{return\u visitorDataCollection;}
设置{u visitorDataCollection=value;}
}
私有字符串_firstName=“”;
私有字符串_lastName=“”;
公共字符串名
{
获取{return\u firstName;}
设置
{
如果(值!=\u firstName)
{
_firstName=值;
OnPropertyChanged(“名字”);
}
}
}
公共字符串姓氏
{
获取{return\u lastName;}
设置
{
如果(值!=\u lastName)
{
_lastName=值;
OnPropertyChanged(“姓氏”);
}
}
}
公共访问者视图模型()
{
}
}
}

//表示数据库上下文的VisitorContext类

public partial class VisitorContext : DbContext
{
    public VisitorContext()
        : base()
    {
    }

    public DbSet<VISITOR> Visitors { get; set; }

}
公共部分类VisitorContext:DbContext
{
公共访问者上下文()
:base()
{
}
公共数据库集访问者{get;set;}
}
}

没什么特别的。然而,我不能把它“放在一起”。如何完成该操作以检索所有访问者并添加新访问者


有人能给我指一下正确的方向吗?

这只是一个简单的例子,告诉我如何让一切都变成现实

向VM添加一些命令:

public ICommand Add {get; private set;}
在构造函数中:

public VisitorViewModel()
{
   using(var context = new VisitorContext()) 
   {
       //fill collection with initial data from DbContext
       context.Visitors.ToList().ForEach(_visitorDataCollection.Add);
   }
   //setup add command, here I'm using MVVM Light like you 
   Add = new RelayCommand(()=> {
          using(var context = new VisitorContext()) 
          {
             _visitorDataCollection.Add(context.Visitors.Add(new Visitor {
                 FirstName = this.FirstName,
                 LastName = this.LastName //read values from model properties
             });
          }
       });
}

就这样,您所需要做的就是将此ViewModel绑定到适当的视图。

好的,我理解对了:您需要一个处理数据库相关内容的dbContext、一个visitor ViewModel、“总体”ViewModel和一些视图。visitor和visitor集合部分似乎有点混合。尝试将它们分为访客和访客集合视图模型。然后,您只需实例化您的上下文,我相信所有这些都会起作用。