首页 > 解决方案 > Wpf Mvvm 实体框架数据库优先绑定

问题描述

我正在使用 Wpf Mvvm Entity Framework 数据库优先构建一个应用程序。我的模型是自动生成的,所以我不能把它NotifyPropertyChanged放在实体中..所以我重写了我的 viewModel 中的所有东西,女巫很难看..

我不认为我很清楚,所以一个代码示例,不会为了更清楚而发布所有内容。

用户控制

<TextBox Name="tbClientNumber" Text="{Binding ClientNumber,
         UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/> 

视图模型类:

public class ClientManagerViewModel : BaseViewModel
{
    public int ClientNumber
    {
        get { return _clientNumber; }
        set
        {
            _clientNumber= value;
            RaisePropertyChanged("ClientNumber");
        }
    }
}

自动生成的实体:

public partial class Client
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Client()
    {
    }

    public int idClient { get; set; }
    public int ClientNumber{ get; set; }
 }

谢谢大家

标签: c#wpfmvvmentity-framework-6inotifypropertychanged

解决方案


如果您不想包装实体类,Fody 可能会帮助您。您可以INotifyPropertyChanged在部分类定义上实现。我还没有尝试过。

所有实现 INotifyPropertyChanged 的​​类都会将通知代码注入到属性设置器中。

https://github.com/Fody/PropertyChanged

实际上,我通常像你一样简单地把它们包起来。


推荐阅读