【发布时间】:2015-05-08 15:34:56
【问题描述】:
我试图了解 WPF 绑定如何与 MVVM 和实体框架结合使用。到目前为止,我将数据绑定理解为与属性相关的概念。但是,当涉及到 EF 时,我无法理解使用哪些对象来定义数据库模型。例如,我有一个类别的模型类:
public class Category : INotifyPropertyChanged
{
string _CategoryId;
public string CategoryId
{
get
{
return _CategoryId;
}
set
{
if (_CategoryId != value)
{
_CategoryId = value;
RaisePropertyChanged("CategoryId");
}
}
}
string _CategoryName;
public string CategoryName
{
get
{
return _CategoryName;
}
set
{
if (_CategoryName != value)
{
_CategoryName = value;
RaisePropertyChanged("CategoryName");
}
}
}
/// <summary>
///
/// </summary>
/// <param name="prop"></param>
void RaisePropertyChanged(string prop)
{
if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); }
}
public event PropertyChangedEventHandler PropertyChanged;
}
和 POCO 版本:
public class CategoryPoco
{
public CategoryPoco() { }
public int CategoryId { get; set; }
public string CategoryName { get; set; }
}
我理解的非 Poco 类的属性可以随后用于数据绑定。但是,我还需要构建数据库上下文模型:
public DbSet<Category> Categories { get; set; }
现在我失去了理解,在构建上下文模型时我是使用 Poco 类还是非 Poco 类?
当我开始与数据库交换数据时,如何匹配这两个类?
【问题讨论】:
-
EF 不在乎你的数据模型是否实现了 INPC。事实上,没有人这样做。所以让它实现 INPC 并在整个应用程序中使用它,从绑定到数据库。
标签: wpf entity-framework mvvm data-binding poco