Зависит от того, используете ли вы независимые реалии или отношения внешних ключей.
Для независимых отношений вы можете найти главный конец 1: N, проверив множественность.Я бы попробовал что-то вроде:
// check each navigation property
foreach (var navProperty in entity.NavigationProperties)
{
// use only properties where one end has * an second end has 1 or 0..1 multiplicity
// Not sure if the condition should not be reversed
if(navProperty.ToEndMember.RelaltionshipMultiplicity ==
RelationshipMultiplicity.Many &&
navProperty.FromEndMember.RelationshipMultiplicity !=
RelationshipMultiplicity.Many)
{
...
}
}
В случае отношений с внешним ключом вы можете использовать методы MetadataTools
, который является классом, включенным в EF.Utility.CS.ttincludeОбычно устанавливается по адресу:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes
Один из методов GetPrincipalProperties(navProperty)
Оба подхода уже используются в шаблоне POCO T4.