我正在研究一个基于实体模型生成 .cs 类的 T4 文件,而我想要做的事情之一是模型中的映射信息。具体来说,对于模型中的每个字段,我正在尝试检索它映射到的数据库字段名称。
我发现映射信息显然存储在 StorageMappingItemCollection 中,但是我很难弄清楚如何查询它并检索我需要的数据。有没有人参加过这门课,也许可以提供指导?
到目前为止,我的代码是这样的(我已将所有内容粘贴到有问题的行):
<#
System.Diagnostics.Debugger.Launch();
System.Diagnostics.Debugger.Break();
#>
<#@ template language="C#" debug="true" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#><#
CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);
string inputFile = @"MyModel.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
StoreItemCollection storeItemCollection = null;
loader.TryCreateStoreItemCollection(inputFile, out storeItemCollection);
StorageMappingItemCollection storageMappingItemCollection = null;
loader.TryCreateStorageMappingItemCollection(
inputFile, ItemCollection, storeItemCollection, out storageMappingItemCollection);
var item = storageMappingItemCollection.First();
storageMappingItemCollection 有 GetItem() 之类的方法,但我一辈子都不能让它返回我知道模型中存在的字段的数据。
提前谢谢!