有没有办法为 ModelMetadata.RelatedEntities 获取 ModelMetadata.Properties?

Mar*_*ine 5 c# t4 scaffolding asp.net-mvc-5

我一直在阅读Microsoft.AspNet.Scaffolding.Core.Metadata命名空间;然而,我是这个对象模型的新手,也许我忽略了一些东西。我正在创建 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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这当然不会起作用,因为RelatedModelMetadata对象没有 Properties 集合;事实上,所有的相关模型元数据属性都是字符串。

任何提示都是您可能拥有的技巧,我们不胜感激。

谢谢!

小智 -2

在视图生成模板中,您可以访问该Model.ModelMetadata.Navigations属性。这与相关模型元数据“相似”...我在引号中重复“相似”...相似性可能更多的是意图,而不是功能。

@foreach (var property in Model.ModelMetadata.Navigations)
{
   //I do what I want!
}
Run Code Online (Sandbox Code Playgroud)

每个都给property你属性

  • 关联属性名称:字符串
  • 显示属性名称:字符串
  • 实体集名称:字符串
  • foreignKeyPropertyNames :字符串数组
  • PrimaryKeyNames :字符串数组
  • 短类型名称:字符串
  • 类型名称:字符串