我已经在WPF应用程序中直接绑定到模型类(并跳过创建单独的viewmodel类)。
现在,在切换到EF6和DBContext后,我遇到生成的EF POCO类的问题,因为它看起来有点棘手或者甚至不建议尝试直接对这些类实现INotifyPropertyChanged接口。
目前:
我还有任何选项可以获得EF6 POCO类自动生成的属性来通知他们的更改吗?
答案 0 :(得分:0)
T4模板是您最好的朋友。你几乎无法避免它们 选项1 - 修改现有的T4模板以实现INotifyPropertyChanged
选项2 - 介绍DTO / ViewModels并使用AutoMapper
选项3 - 实现Postsharp,它使用面向方面的编程来实现INotifyPropertyChanged每个类的一行属性 - 再次,你必须在你的T4模板中添加几行
编辑 - 示例 这是我的实体的T4模板,我添加了[DataContract]属性以允许POCO被序列化。
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
using System.Runtime.Serialization;
[DataContract]
<#=codeStringGenerator.EntityClassOpening(entity)#>
{
// Then further down
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
#>
[DataMember]
<#=codeStringGenerator.Property(edmProperty)#>
<#