从EDMX文件获取架构

37S*_*ars 4 t4 entity-framework-4

我需要修改T4模板POCO.tt以从EDMX文件中检索数据库模式.我可以看到存储在XML中的EntitySet标记中的模式.但是,在使用EntitySet对象时,我无法在任何地方找到架构.

有谁知道我会在哪里找到数据库架构?

谢谢

Nin*_*Nye 7

更新 我在博客文章中写了我的发现:

http://www.ninjanye.co.uk/2011/06/getting-schema-information-from-edmx.html

http://jnye.co/Posts/3/getting-schema-information-from-an-edmx-file-with-poco

我自己也遇到了同样的问题.首先,您需要从edmx文件的存储模型内容(edmx:StorageModels)部分检索EntityContainer

在tt模板的顶部(在实例化MetadataLoader并声明inputFile之后)添加以下代码以获取存储模型内容EntityContainer

StoreItemCollection sic;
loader.TryCreateStoreItemCollection(inputFile, out sic);
EntityContainer sicEntityContainer = sic.GetItems<EntityContainer>().First();
Run Code Online (Sandbox Code Playgroud)

然后从foreach(ItemCollection.GetItems中的var实体...)循环中,您可以获得具有以下内容的当前模式

EntitySet eset = sicEntityContainer.GetEntitySetByName(code.Escape(entity), true);
string schemaName = eset.MetadataProperties["Schema"].Value.ToString();
Run Code Online (Sandbox Code Playgroud)

注意:您可能必须在tt模板中重复下方的ComplexType属性的get模式代码