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

时间:2015-04-30 21:48:00

标签: c# asp.net-mvc-5 t4 scaffolding

我一直在阅读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
    }
  }
}

这当然不会起作用,因为RelatedModelMetadata对象没有Properties集合;实际上所有的RelatedModelMetadata属性都是字符串。

任何提示都是你可能会感激的技巧。

谢谢!

1 个答案:

答案 0 :(得分:-2)

在视图生成模板中,您可以访问Model.ModelMetadata.Navigations属性。这是类似的"到RelatedModelMetadata ...我重复"类似"在引号中...相似性可能更多的是意图,而不是功能。

@foreach (var property in Model.ModelMetadata.Navigations)
{
   //I do what I want!
}

每个property都会为您提供属性

  • AssociationPropertyName: string
  • DisplayPropertyName: string
  • EntitySetName: string
  • ForeignKeyPropertyNames: string array
  • PrimaryKeyNames: string array
  • ShortTypeName: string
  • TypeName: string