我正在使用Visual Studio 2015编写WPF MVVM Light应用程序。使用数据库优先生成模型,使用Entity Framework 6将数据引入。在我的MainViewModel.cs文件中,我希望在执行
我看到的示例都是关于向模型添加注释(例如,this);但是,我正在使用自动生成的Entity Framework模型。我的ViewModels引用
这里是保存从EF返回的结果的
用户单击DataGrid上的一行,我们会显示详细信息供其更新。然后他们可以点击保存按钮。但是在执行Context.SaveChanges()之前,我们希望验证每个Employee中的字段。
以下是由Entity Framework自动生成的Employee部分类的相关区域:
例如,
SaveChanges()
之前验证数据。我看到的示例都是关于向模型添加注释(例如,this);但是,我正在使用自动生成的Entity Framework模型。我的ViewModels引用
ObservableCollection<Employee>
对象--没有直接引用字段,因此无法在它们上面放置注释。这里是保存从EF返回的结果的
SearchResults
属性:private ObservableCollection<Employee> _searchResults;
public ObservableCollection<Employee> SearchResults
{
get { return _searchResults; }
set
{
if (_searchResults == value) return;
_searchResults = value;
RaisePropertyChanged("SearchResults");
}
}
SearchResults
在搜索后被填充并绑定到 DataGrid 上:
var query = Context.Employees.AsQueryable();
// Build query here...
SearchResults = new ObservableCollection<Employee>(query.ToList());
用户单击DataGrid上的一行,我们会显示详细信息供其更新。然后他们可以点击保存按钮。但是在执行Context.SaveChanges()之前,我们希望验证每个Employee中的字段。
以下是由Entity Framework自动生成的Employee部分类的相关区域:
public int employeeID { get; set; }
public int securityID { get; set; }
public string firstName { get; set; }
public string middleName { get; set; }
public string lastName { get; set; }
public string suffix { get; set; }
public string job { get; set; }
public string organizationalUnit { get; set; }
public string costCenter { get; set; }
public string notes { get; set; }
public System.DateTime createdDate { get; set; }
例如,
securityID
不能为空且必须是int
类型,而firstName
和lastName
是必需的等。如何完成此验证并向用户显示错误?
Validation.ErrorTemplate
。这里有一个很好看的模板。 - Yusuf Tarık Günaydın