实体框架6 T4获取EntitySet名称

时间:2015-04-27 03:52:43

标签: c# entity-framework t4 entity-framework-6.1

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

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

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

我很难过,感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

经过一些其他T4模板的挖掘后,我找到了解决方案。看来在以前的版本中,EF模板将使用MetadataLoader类,现在文件本身中有一个自定义的EdmMetadataLoader类。这个新类没有公开对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