使用实体框架进行MVVM验证

时间:2017-04-06 10:13:56

标签: c# wpf entity-framework mvvm

我目前正在使用MVVM和Entity Framework Code First Model开展项目。所以我在我的模型类中实现了IDataErrorInfo和INotifyPropertyChanged。现在,在我的viewmodel中我实现了一个SaveCommand和一个CanSave布尔方法,我的问题是如何为整个实体而不是单个属性提高canexecutechanged?因为我的属性已经在模型中实现了InotifyPropertyChanged。

这是我的模型类

 public class Guest:ValidatableBindableClass
{
    //my properties here
    //implement InotifyPropertyChanged and IDataErrorInfo
}

这是我的ViewModelClass:

 public class AddEditGuestViewModel:BindableClass
{
    private Hospede guest;
    public RelayCommand SaveCommand  { get; set; }
    private readonly Hmsdb.HMS context = new Hmsdb.HMS();

    public Hospede Guest
    {
        get { return guest; }
        set { SetProperty(ref guest, value, propertyName: "Guest"); }
    }

    private void OnSave()
    {

        context.Hospedes.Add(Guest);
        context.SaveChanges();
    }

    private bool CanSave()
    {
        return context.Entry(Guest)
            .GetValidationResult().IsValid;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以通过将PropertyChangednull传递给string.Empty的构造函数来提升所有属性的PropertyChangedEventArgs事件:

PropertyChanged(this, new PropertyChangedEventArgs(null));

您需要调用每个RaiseCanExecuteChanged()的{​​{1}}方法。