C# 是否有方法获取ModelMetadata.RelatedEntities的ModelMetadata.Properties?

C# 是否有方法获取ModelMetadata.RelatedEntities的ModelMetadata.Properties?,c#,asp.net-mvc-5,t4,scaffolding,C#,Asp.net Mvc 5,T4,Scaffolding,我一直在阅读名称空间;然而,我对这个对象模型还不熟悉,也许我忽略了一些东西。我正在创建T4文本模板,并希望自动生成相关模型数据的输出。类似于ModelMetadata.RelatedModelMetadata.ModelMetadata.PropertyMetadata的内容,即 foreach (PropertyMetadata property in ModelMetadata.Properties) { if (property.IsAssociation) { Related

我一直在阅读名称空间;然而,我对这个对象模型还不熟悉,也许我忽略了一些东西。我正在创建T4文本模板,并希望自动生成相关模型数据的输出。类似于ModelMetadata.RelatedModelMetadata.ModelMetadata.PropertyMetadata的内容,即

foreach (PropertyMetadata property in ModelMetadata.Properties) {
  if (property.IsAssociation) {
    RelatedModelMetadata relatedModel = property.RelatedModel
    foreach (PropertyMetadata relatedProperty in relatedModel.Properties) {
      // Do Something
    }
  }
}
这当然不起作用,因为对象没有属性集合;事实上,所有RelatedModelMetadata属性都是字符串

任何提示都是技巧,您可能会有感谢


谢谢

在视图生成模板中,可以访问
Model.ModelMetadata.Navigations
属性。这与RelatedModelMetadata“相似”。。。我用引号重复“相似”一词。。。这种相似性可能更多地体现在意图上,而不是功能上

@foreach (var property in Model.ModelMetadata.Navigations)
{
   //I do what I want!
}
每个
属性
都提供了属性

  • AssociationPropertyName:字符串
  • DisplayPropertyName:字符串
  • EntitySetName:字符串
  • ForeignKeyPropertyNames:字符串数组
  • PrimaryKeyNames:字符串数组
  • ShortTypeName:字符串
  • TypeName:string

Hi Mark,您是否在T4中找到了满足此要求的解决方案?我曾尝试使用反射来获取RelatedMetadata对象的类型名称字符串的属性,但由于T4在其自己的应用程序空间中运行,因此这不起作用。我找不到为RelatedModel构建Scaffolding.Core.Metadata对象的方法。我只能使用EF.Utility.CS.ttinclude工具,然后加载total EntityFramework edmx文件,但这会将我的T4模型绑定到EntityModel,并且不能在另一个项目中重复使用它生成控制器。@FrancoisGrobler有没有办法在T4模板之外实例化Scaffolding.Core.Metadata对象?