使用c#linq修改NHibernate配置文件 让我们考虑下面的Web.CONFIG文件 <?xml version="1.0"?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> </configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle </property> <property name="connection.provider"> NHibernate.Connection.DriverConnectionProvider </property> <property name="connection.connection_string"> Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword; </property> <property name="dialect"> NHibernate.Dialect.MySQLDialect </property> <property name="show_sql"> false </property> <property name="hbm2ddl.keywords">none</property> </session-factory> </hibernate-configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <qualifyAssembly partialName="MySql.Data" fullName="MySql.Data, Version=5.1.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </assemblyBinding> </runtime> </configuration>
但是,当我查看文档时,xdoc中的视图如下所示:使用c#linq修改NHibernate配置文件 让我们考虑下面的Web.CONFIG文件 <?xml version="1.0"?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> </configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name='proxyfactory.factory_class'>NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle </property> <property name="connection.provider"> NHibernate.Connection.DriverConnectionProvider </property> <property name="connection.connection_string"> Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword; </property> <property name="dialect"> NHibernate.Dialect.MySQLDialect </property> <property name="show_sql"> false </property> <property name="hbm2ddl.keywords">none</property> </session-factory> </hibernate-configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <qualifyAssembly partialName="MySql.Data" fullName="MySql.Data, Version=5.1.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </assemblyBinding> </runtime> </configuration>,c#,.net,xml,linq,nhibernate,C#,.net,Xml,Linq,Nhibernate,但是,当我查看文档时,xdoc中的视图如下所示: //<property name="connection.provider" xmlns="urn:nhibernate-configuration-2.2"> // 如何解决此问题?问题是什么?xdoc结果就是我所期望的……我们可以通过这个查询XNamespace ns=doc.Root.Name.namespace获得名称空间值吗var ns=xDoc.subjects().First(x=>x.Name.LocalName=
//<property name="connection.provider" xmlns="urn:nhibernate-configuration-2.2">
//
如何解决此问题?问题是什么?xdoc结果就是我所期望的……我们可以通过这个查询XNamespace ns=doc.Root.Name.namespace获得名称空间值吗
var ns=xDoc.subjects().First(x=>x.Name.LocalName==“hibernate配置”).Name.Namespace代码>
XNamespace ns = "urn:nhibernate-configuration-2.2";
var xDoc = XDocument.Load(....);
var prop = xDoc.Descendants(ns+"property")
.First(p=>p.Attribute("name").Value=="connection.provider");
prop.Value = "Sample.DriverConnectionProvider";
XDocument doc = XDocument.Load("path to webconfig");
var xElems = from x in doc.Descendants()
where x.Name.LocalName == "property name=\"connection.provider\""
select x;
foreach (var xElem in xElems)
{
Console.WriteLine(xElem.Attribute("name"));
}
//<property name="connection.provider" xmlns="urn:nhibernate-configuration-2.2">
XNamespace ns = "urn:nhibernate-configuration-2.2";
var xDoc = XDocument.Load(....);
var prop = xDoc.Descendants(ns+"property")
.First(p=>p.Attribute("name").Value=="connection.provider");
prop.Value = "Sample.DriverConnectionProvider";