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
我正在使用 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