我使用EF5作为我的ORM工具。我在DB中有3个表之间的关系如下:
表1是主表。它与表2的关系为“1到0..1”。表2与表3的关系为“多对1”。
现在当你将它导入EF时,它会崩溃(隐藏)表2.你可以通过以下方式进入表3:
Table1.Table3
基本上在我生成代码的T4模板中,我需要知道表1和表3之间的关系是否隐藏了中间表。
我该怎么做?
很多表链接很容易,因为我可以看一下导航属性关系的多样性如下:
if (navProperty.FromEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many &&
navProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many)
我会知道中间缺少一个表,但是对于上面的模型,它会变成多个到0..1的关系,这可能会也可能不会隐藏中间表。
有什么想法吗?
答案 0 :(得分:0)
我设法为此找到了一个粗略的解决方法,如下所示:
bool collapsedTable = false;
string relationshipTypeName = navProperty.RelationshipType.Name;
var assocSet = container.BaseEntitySets.OfType<AssociationSet>()
.Where(es => es.Name == relationshipTypeName && !es.ElementType.IsForeignKey)
.FirstOrDefault();
if (assocSet != null)
{
collapsedTable = true;
}
如果有人遇到类似的问题。它似乎解决了我所遇到的确切问题......不管这是100%解决它的100%解决方案,我不确定。有任何问题,我将重新审视。