我正在使用EF 6.1.3中的T4模板。具体来说,我在生成时创建了一些额外的类。找出一些基本的CRUD方法。我需要访问EntitySet名称。 T4迭代......
var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);
这些对象属于EntityType
类型。我需要找到相关的EntitySet.Name
属性。
我很难过,感谢任何帮助。
答案 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