0

nhibernate の使用を開始し、Session Manager をセットアップして新しい SessionFactory を作成しました。アプリの初回起動時にいくつかの情報を変更する必要があります。

XDocument を使用して構成ファイル (app.config ではない) を開きます。

<settings>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <reflection-optimizer use="false"/>
    <session-factory>
       <property name="x">SomeValue</property>
    </session-factory>
  </hibernate-configuration>
</settings>

XDocument xdoc = XDocument.Load(<file>);
var x = xdoc.Root.Element("hibernate-configuration");

xmlns を削除しない限り、x は null です。私は何が欠けていますか?

4

2 に答える 2

3

ここで追加した新しい名前空間ではなく、null 名前空間からローカル名で要素を呼び出しているようです。

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

これを試して:

xdoc.Root.Element(XName.Get("hibernate-configuration", "urn:nhibernate-configuration-2.2"))
于 2009-02-25T15:52:23.113 に答える
1

この名前空間 URI を XName.Get で渡す必要があります。そうしないと、デフォルトの空の名前空間内の <hibernate-configuration> 要素の一致のみが取得されます。

var x = xdoc.Root.Element (
  XName.Get ( "hibernate-configuration", "urn:nhibernate-configuration-2.2" ) );
于 2009-02-25T15:49:29.267 に答える