繁体   English   中英

实体框架6 T4获取EntitySet名称

[英]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类,现在文件本身中有一个自定义的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM