質問

NHibernateのに新しいイムは、それの構成の側面は、いつも私に過度に面倒に思えたしました。昨日、私は流暢NHibernateはのオートマッピング機能に出くわしたと適切に感銘を受けました。

自分自身を教育するために、私は自分自身に「はじめに最初のプロジェクト」をしようとする課題を設定します(ます。http: //wiki.fluentnhibernate.org/show/GettingStartedFirstProject の)AutoMappingsと表記を使用。私は多くの幸運を持っていないに認めざるを得ません。

私の手順をsummiseするには:

私は主に当社のデータベースにはネーミング基準でより多くのインラインそれをもたらすだろう。このように外部キー(のProductIdにすなわちPRODUCT_ID)からアンダースコアを削除するには、例のデータベーススキーマへのいくつかのマイナーな変更を加えました。

Q1)私は、一例としてForeignKeyConventionを使用してIHasManyConvention実装を作成しようとしたが、(私は)私は昨日はそう後で記事が書かれていたので、デザインが変更された構築ダウンロードためであると推測存在するように見えるdoesntのWithKeyColumn方法。私はこれを是正するにはどうすればよい?

私は、これはそれが簡単になるだろう、彼らは店舗(Product.cs)と従業員へのスタッフ(Store.cs)にStoresStockedInの名前を変更すると思っていたとして、

私はまた例の実体層にいくつかのマイナーな変更を加えます。

私のコードは次のようになります:

var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
    .ConnectionString(c => c
        .Is(connectionString)))
.Mappings(m => m.AutoMappings.Add(
                AutoPersistenceModel.MapEntitiesFromAssemblyOf<Store>()
                    .Where(t => t
                        .Namespace == "FluentNHibernateTesting.Entities")
                        .ConventionDiscovery.Setup(c => c.Add<ForeignKeyConvention>())
                ))
.BuildSessionFactory();

私は、試してみて、例を始めるあたりとしてデータベースに保存し、製品及び従業員を追加します。私が手に例外がコミットに起こるとされます:

オブジェクトが保存されていない一時的なインスタンスを参照する - フラッシュする前に一時インスタンスを保存します。タイプ:FluentNHibernateTesting.Entities.Employee、エンティティ:FluentNHibernateTesting.Entities.Employee

Q2)どのように私はこの問題を解決するのですか?私はそれは、これが効果的に自動マッピングを使用して行く方法について困惑ビットを正しくオブジェクトの関係のカスケード要素を設定するとは何かを持っていますが、イムこと(私の限られた読書から)理解しています。

Q3)が流暢プロジェクトのターゲットのリリース日はありますか?私は(私は他の多くの仮定のように)、これは優れた取り組みであると感じたが、それは安定した状態にある場合を除き、それを使用しての意識です。

Q4)。その彼らがhbn.xmlと流暢の機能のパリティに向けて着実に取り組んでいるブログの多くに言及しました。これらの不足している機能のリストはどこかに、このツールの評価と使用を支援するためにありますか?

事前に助けを感謝します。

役に立ちましたか?

解決

私は直接彼にジェームズ・グレゴリーにメールで同じ質問をしました。彼は、この優れた応答性を提供します。

'ねえポール、

1)KeyColumnNamesはあなたが後にしているものです。

2)あなたは、3つの方法のひとつを行うことができます。 IHasManyConventionは、すべての関係カスケードを行うグローバルにセットアップは、ForTypesThatDeriveFromコール、または自動マッピングのオーバーライドを使用します。

3)私たちは、今、私たちの1.0リリースのプライベートテストにいます。私たちは解放するパブリックベータ版やストレートがあるでしょうが、それは今後数週間のうちに起こるべきかどうかわからない。

4)それは私たちが今まで完全に可能NHibernateのを完備していますよ非常に低いですが、我々はすべき願望を持っていません。 NHの機能の多くは非常に難解であり、それらを実装、私たちにはほとんど利点があります。 1.0の時点で、我々は、人々が定期的に使用することをサポートしていない非常にいくつかの機能があるでしょう。私は自信を持って、すべての一般的なマッピングのシナリオをご用意していて、何があるかどうあなたは常にそのような場合のためにHBMに戻ってドロップすることができないと言うことができます。

ドキュメントは1.0のためにオーバーホールされようとしている、私たちのドキュメントが古くなっている任意のコメントを横取りするために;)

ジェームズ

おかげでジェームズます。

他のヒント

  

のターゲットのリリース日があります   流暢プロジェクト? I(私は多くの仮定のように   他の人が)、これは優れていると感じ   イニシアチブが、それを使用しての留意しています   それは安定した状態にある場合を除きます。

あなたは今、自分のSVNリポジトリから流暢NHibernateはの作業バージョンを得ることができる必要があります。彼らはまた、バイナリをコンパイルしています。

現在、流暢NHibernateは、任意の公式リリースではありません。これは、高品質の反射ではなく、変更の私達の急速の。私たちのコードベースは、我々はNHibernateのコアと同等の機能を実現するまで、無意味な努力を正式リリースを出して作るこれ、毎日更新されています。あなたが日々使用し、通常の機能のほとんどは準備ができています。

http://fluentnhibernate.org/downloadsする

現在の問題はここにあります:

http://code.google.com/p/fluent-nhibernate /問題/リスト

それらのどれも取引-殺人者であることを表示されません。私はそれはあなたが実験する必要がどのくらいの時間に依存思います。

  

オブジェクト参照、保存されていない過渡   インスタンス - 一時的なインスタンスを保存   フラッシュする前に。タイプ:   FluentNHibernateTesting.Entities.Employee、   エンティティ:   FluentNHibernateTesting.Entities.Employee

もしGoogleののオブジェクトがの保存されていない一時的なインスタンスを参照する場合は、

は、このためのいくつかの一致を検索します。あなたの最善の策は、これらおよびトラブルシューティングを経由開始することです。ちなみに、私が読んだから、それはエラーメッセージはそれが言う正確に何を意味し、または更新取得されていない、多くの多くまたはカスケード関係があるように聞こえる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top