如何更改导航属性返回类型

时间:2013-04-04 11:36:47

标签: c# winforms entity-framework entity-framework-5 ef-model-first

我阅读了以下关于EF5 Databinding with WinForms的文章。

我使用VS2010,.NET 4.0和EF5 Model First方法,我不知道如何在VS2010 EF Designer中更改导航属性返回类型,而不更改自动生成的实体类。例如,我需要将导航属性返回类型从ICollection<T>更改为ObservableCollection<T>,但在属性视图中,已禁用“返回类型”选项。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。可以更改作为集合的所有导航属性的类型。应该编辑Model First自动生成实体的文本模板* .tt文件。

默认情况下,EF5会生成HashSet类型的导航属性:

If(edmProperty.ToEndMember.RelationshipMultiplicity = RelationshipMultiplicity.Many)
     defaultValue = " = New HashSet(Of " & propertyType & ")"
     propertyType = "ICollection(Of " & propertyType & ")"
End If

要将导航属性类型更改为ObservableCollection<T>,应修改两行* .tt代码:

If(edmProperty.ToEndMember.RelationshipMultiplicity = RelationshipMultiplicity.Many)
     defaultValue = " = New ObservableCollection(Of " & propertyType & ")"
     propertyType = "ObservableCollection(Of " & propertyType & ")"
End If

之后,应自动重新生成实体类。