我想從Entity Framework中讀取EDMX文件中的實體集。XPath不能正常工作
的EDMX文件(XML格式),具有以下佈局:
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<edmx:Runtime>
<edmx:ConceptualModels>
<Schema Namespace="Model" Alias="Self" p1:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:p1="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
<EntityContainer Name="EntityModel" p1:LazyLoadingEnabled="true">
<EntitySet Name="TableName" EntityType="Model.TableName" />
我使用以下XPath獲取和EntityContainer中的所有EntitySet的節點:
/edmx:Edmx/edmx:Runtime/edmx:ConceptualModels/Schema/EntityContainer/EntitySet
但我沒有得到任何結果使用此C#代碼:
XmlDocument xdoc = new XmlDocument("pathtoedmx");
var ns = new XmlNamespaceManager(xdoc.NameTable);
ns.AddNamespace("edmx", "http://schemas.microsoft.com/ado/2009/11/edmx");
ns.AddNamespace("annotation", "http://schemas.microsoft.com/ado/2009/02/edm/annotation");
ns.AddNamespace("p1", "http://schemas.microsoft.com/ado/2009/02/edm/annotation");
ns.AddNamespace("", "http://schemas.microsoft.com/ado/2009/11/edm");
var entitySets = xdoc.SelectNodes("/edmx:Edmx/edmx:Runtime/edmx:ConceptualModels/Schema/EntityContainer/EntitySet", ns);
已從此工具獲得XPath(http://qutoric.com/xmlquire/),因爲我開始不相信自己的XPath技能,但它告訴我我已經使用了相同的XPath。
如果我刪除「/模式/ EntityContainer相關/ EntitySet的」部分其尋找「/ EDMX:EDMX/EDMX:運行/ EDMX:ConceptualModels」,但不會進一步對已經嘗試指定「EDMX 「namespace(」edmx:/ Schema「)但沒有區別。
希望你能幫助我,已經把我的頭撞在桌子上。 :)
是否需要,如果沒有蜜蜂的XPath,您可能需要使用LinqToXml – CSharpie