Entity Framework 6 T4 获取实体集名称

Entity Framework 6 T4 Get EntitySet Name

我正在使用 EF 6.1.3 中的 T4 模板。具体来说,我在生成时创建了一些额外的 类。剔除一些基本的 CRUD 方法。我需要访问 EntitySet 名称。 T4 遍历...

var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);

这些对象的类型是EntityType。我需要找到关联的 EntitySet.Name 属性.

我很困惑,如有任何帮助,我们将不胜感激。

在深入研究其他一些 T4 模板后,我找到了解决方案。似乎在以前的版本中,EF 模板会使用 MetadataLoader class,现在文件本身中有一个自定义的 EdmMetadataLoader class。这个新的 class 没有暴露对 EntitySet 本身的任何访问权限。

通过...获取实体集合后...

var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);

您可以访问容器...

var container = itemCollection.OfType<EntityContainer>().FirstOrDefault();

然后在对实体的迭代中...

    foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
    {
        fileManager.StartNewFile(entity.Name + ".cs");
        var entitySet = container.BaseEntitySets.OfType<EntitySet>().FirstOrDefault(set => set.ElementType == entity);
        ...
    }

不是 100% 确定这是否是正确的方法,但它完成了工作并且我在下面的 属性...

中得到了 EntitySet 名称
entitySet.Name