.NET 3.5 での Castle-ActiveRecord チュートリアルが壊れていますか?
-
02-07-2019 - |
質問
ActiveRecordを試した人はいますか イントロサンプル C# 3.5 では?どういうわけか、サンプルが完全に間違っているか、単に古いのではないかという気がします。XML 設定は明らかに間違っています。
<add key="connection.connection_string" value="xxx" />
:
<add key="hibernate.connection.connection_string" value="xxx" />
(nhibernate 設定構文を正しく理解していれば...)
何が間違っているのか気になります。ユーザー モデルで Count() を呼び出すと、「ユーザーの ExecuteQuery を実行できませんでした」例外が発生します。
これが何なのか全く分かりません。チュートリアルのソースは、ページ上のソースとは大きく異なり (特に XML 構成が)、ほとんどの点で構文が異なる VS2003 サンプルです (ジェネリックなどはありません)。
助言がありますか?ActiveRecord は素晴らしいですね。
解決
(コメント投稿するには長すぎました)
[@Tigrane] 私の以前の回答に対するコメントから、エラーは構成ではなく、エンティティの 1 つにあるようです。「休止状態」を削除すると構成が修正され、実際のエラーが発生するようになりました。これは、ActiveRecord がマッピングを作成するためにエンティティ「Post」が適切に属性付けされていないように見えます。
表示されるエラーをさらに詳しく見ると、「投稿」が失敗した理由についての詳細が記載されている可能性があります。
一般的なものには次のようなものがあります。
- このクラスには
[ActiveRecord]
属性。 - の物件はありません
[PrimaryKey]
属性。 - 「Post」(または「Posts」の場合は「Posts」)と呼ばれる一致するテーブルがありません。
PluralizeTableNames
は「本当」です)。 - 属性付きプロパティに一致する列がありません。
- 属性付きプロパティとパブリック メソッドは、
virtual
(これはいつも私を殺します)。
他のヒント
キーの「hibernate」部分は、NHibernate バージョン 2.0 で削除されました。このバージョンは、NHibernate 2.0 以降に適しています。
<add key="connection.connection_string" value="xxx" />
編集:クイックスタートには、Castle と NHibernate のバイナリが付属していないようです。バイナリをどこかからダウンロードしたはずです。NHibernate.dll ファイルのバージョン番号を提供していただけると助かります。
紛らわしいことに、クイックスタートの少なくとも一部は NHibernate (NH) 2.0 に対応するように更新されていますが、最新の「適切な」Castle リリースはまだ 1.0 RC3 (現在ほぼ 1 年前) であり、NH 2.0 は含まれていません。
2つの方法で行くことができます。Castle RC3 を引き続き使用することもできますが、この場合は構成エントリに「hibernate」プレフィックスを追加する必要があります。または、 建てる NH 2.0 に対して実行されるはずのトランクからの Castle の部分。後者のアプローチの問題は、NH 2.0 で導入された他の重大な変更の一部がクイック スタートでは修正されない可能性があることです。
「」を削除します。hibernate.
" の部分はすべての構成エントリに使用されます。最初の例が正しい例です。