0

私はNhibernateに比較的慣れていません。ストアド プロシージャを更新しようとしています。名前付きクエリで以下のセクションを取得しました。

<sql-query name="TestUpdate">
exec UpdateTest :DateField :StringField :IntField :BoolField :NullIntField
</sql-query>

Testupdate は、単純な更新ステートメントを含むストアド プロシージャです。次のコード行を使用してパラメーターを更新しています。

        int? testdata = null;
        IQuery query = Session.GetNamedQuery("TestUpdate");
        query.SetDateTime("DateField", DateTime.Now.AddDays(10));
        query.SetString("StringField", "UK");
        query.SetInt32("IntField", 100);
        query.SetBoolean("BoolField", true);

        if(testdata.HasValue)
            query.SetInt32("NullIntField", testdata.GetValueOrDefault());
        else
        {
            query.SetParameter("NullIntField", null,NHibernateUtil.Int32);    
        }

        var cmd  = new SqlCommand(query.QueryString, (SqlConnection)Session.Connection);
        cmd.ExecuteNonQuery();

ただし、 の値を見ると、query.QueryStringまだ同じ値 ( ) を指していますexec UpdateTest :DateField :StringField :IntField :BoolField :NullIntField。名前付きパラメーターが割り当てられていないようです。この問題を回避するにはどうすればよいですか?

データのクエリに流暢な nhibernate を使用する SharpArchitecutre を使用しています。

この特定の問題についてフォーラムを検索しましたが、例を見つけることができませんでした。

問題は些細なことかもしれませんが、これまでのところ解決策を見つけることができませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1

0

NHibernate では、ストアド プロシージャはほとんどサポートされていません。詳細については、NH のドキュメントを参照してください: http://nhibernate.info/doc/nh/en/index.html#querysql-limits-storedprocedures

そして、おそらくこれはあなたを助けるかもしれません: http://ayende.com/blog/1692/using-nhibernate-with-stored-procedures

于 2011-11-23T16:07:06.890 に答える