在您尝试使用的实体的类中,将导航属性类型更改为 ObservableCollection。
由此:
public Customer()
{
this.CustomerAddresses = new HashSet<CustomerAddress>();
}
public virtual ICollection<CustomerAddress> CustomerAddresses { get; set; }
}
对此:
public Customer()
{
this.CustomerAddresses = new ObservableCollection<CustomerAddress>();
}
public virtual ICollection<CustomerAddress> CustomerAddresses { get; set; }
}
由于这是自动生成的代码,您还需要更改代码生成文件中的一些规则。尝试手动进行这些更改以确保它们首先工作,然后进行更改。对我来说,我必须对我的 .tt 文件进行以下更改
添加使用 System.Collections.ObjectModel 通过添加下面提到的行。
return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
? string.Format(
CultureInfo.InvariantCulture,
"{0}using System;{1}" +
"{2}",
inHeader ? Environment.NewLine : "",
includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
includeCollections ? (Environment.NewLine + "using System.Collections.ObjectModel;") : "",
inHeader ? "" : Environment.NewLine)
: "";
并将您的 HastSet 声明更改为 Observable Collection
this.<#=code.Escape(navigationProperty)#> = new ObservableCollection<<#=typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType())#>>();
另外,将此处的 ICollection 更改为 ObservableCollection
navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType,
您的代码生成文件可能与我的不同,但这些代码部分应该让您了解要在文件中搜索的内容。