c# - Entity Framework T4 模板,如何确定关系是否是正确的一对多

标签 c# entity-framework t4

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

我需要它能够区分属于普通“1 * 许多”集合属性的类属性和“1 * 许多”但隐藏折叠的多对多链接的类属性。

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

在 Entity Framework 中,不会显示“Table4”,您将按如下方式导航链接:

"Table3" -> "Table5CollectionProperty" -> "Table5"

"Table5" -> "Table3CollectionProperty" -> "Table3"

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

编辑

或者至少,有没有办法使用 C# 代码中的上下文找到这一点?

最佳答案

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

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

将其发布在此处,以防其他人有需要。

关于c# - Entity Framework T4 模板,如何确定关系是否是正确的一对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990590/

相关文章:

c# - 使用 ASP.net C# 读取文本文件和操作数据

entity-framework - 查看 EF Core 生成的 sql 查询

c# - EntityFramework t4 模板 - XML 文档

c# - 给定一个表示类型的字符串,我需要知道它是值类型还是引用类型

c# - MonoMac 中的应用程序关闭

c# - System.Reflection.Emit - If 语句生成

c# - Entity Framework 更改主键类型

entity-framework - Code First - 两个外键作为主键,无法添加迁移

file - 将 T4 模板输出复制到新文件

c# - 我可以重用 C# SqlParameter