实体框架T4模板,如何找出关系是否合适1对多

时间:2013-08-01 09:46:49

标签: c# entity-framework t4

我有一个T4模板,可以为我的模型中的每个表输出一些代码。

我需要它能够区分一个普通“1 *多”集合属性的类的属性,以及一个“1 *多”但隐藏折叠多对多链接的属性。

例如,如果我有“Table1”,“Table2”,“Table3”,“Table4”和“Table5”。 “Table1”具有1 *多个“Table2”。使用“Table4”作为链接表,“Table3”对“Table5”有多对多。

在实体框架中,“Table4”不会显示,您可以按如下方式导航链接:

  

“表3” - > “Table5CollectionProperty” - > “表5”

     

“表5” - > “Table3CollectionProperty” - > “表3”

所以我想知道的是,如果我使用T4模板,是否有办法找出属性“Table5CollectionProperty”实际上是隐藏多对多链接的属性?

修改

或者至少,有没有办法在c#代码中使用上下文找到它?

1 个答案:

答案 0 :(得分:2)

好的,在深入研究MSDN后,我相信我找到了一种方法来解决这个问题。在T4模板中,我可以按如下方式访问属性:

if (navProperty.FromEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many &&
    navProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many)
{
    // deal with many to many link collections here...
}

在此发布,以防其他人需要此功能。