Skip to content

Commit a897c9e

Browse files
committed
Update MappingHelper.cs
When using type hierarchies in an EF project, the TypeName is not exactly the ElementType.FullName, but rather OfType(ElementType.FullName). For example: <EntitySetMapping Name="People"> <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Person)"> <MappingFragment StoreEntitySet="Person"> <ScalarProperty Name="PersonID" ColumnName="PersonID" /> <ScalarProperty Name="FirstName" ColumnName="FirstName" /> <ScalarProperty Name="LastName" ColumnName="LastName" /> </MappingFragment> </EntityTypeMapping> <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Instructor)"> <MappingFragment StoreEntitySet="Person"> <ScalarProperty Name="PersonID" ColumnName="PersonID" /> <ScalarProperty Name="HireDate" ColumnName="HireDate" /> <Condition ColumnName="HireDate" IsNull="false" /> <Condition ColumnName="EnrollmentDate" IsNull="true" /> </MappingFragment> </EntityTypeMapping> <EntityTypeMapping TypeName="IsTypeOf(SchoolModel.Student)"> <MappingFragment StoreEntitySet="Person"> <ScalarProperty Name="PersonID" ColumnName="PersonID" /> <ScalarProperty Name="EnrollmentDate" ColumnName="EnrollmentDate" /> <Condition ColumnName="EnrollmentDate" IsNull="false" /> <Condition ColumnName="HireDate" IsNull="true" /> </MappingFragment> </EntityTypeMapping> </EntitySetMapping> You can see documentation here: http://msdn.microsoft.com/en-us/library/vstudio/bb399272(v=vs.100).aspx I've tested this change on my project which uses type hierarchies and it works fine. I did not do any performance checks with the new conditional.
1 parent bb14ca1 commit a897c9e

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

EntityFramework.Utilities/EntityFramework.Utilities/MappingHelper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public EfMapping(DbContext db)
121121
.Descendants()
122122
.Single(e =>
123123
e.Name.LocalName == "EntityTypeMapping"
124-
&& e.Attribute("TypeName").Value == set.ElementType.FullName)
124+
&& (e.Attribute("TypeName").Value == set.ElementType.FullName || e.Attribute("TypeName").Value == string.Format("IsTypeOf({0})", set.ElementType.FullName)))
125125
.Descendants()
126126
.Where(e => e.Name.LocalName == "MappingFragment");
127127

0 commit comments

Comments
 (0)