6

アプリケーションをNHibernate 1.2 から 2.0に移行する場合、どのような考慮事項がありますか? 重大な変更と推奨される変更とは何ですか?

マッピングの問題はありますか?

4

2 に答える 2

8

NHibernate 2.0 の重大な変更

十分なテスト カバレッジがあれば、それは忙しい仕事です。

編集:今朝アップグレードしました。大きなことは何もありません。削除した後、セッションを Flush() する必要があります。Expression 名前空間は Criterion に名前が変更されました。これらはすべて上記のリンクで説明されています。マッピングを変更する必要はありません。かなり透明です。ああ、トランザクションはどこにでもありますが、おそらくすでにそれを行っていたでしょう。

ところで、ここに興味深い変更点があります: http://codebetter.com/blogs/patricksmacchia/archive/2008/08/26/nhibernate-2-0-changes-overview.aspx

于 2008-08-26T03:04:08.333 に答える
2

ここで答えを見つけました:

http://blog.domaindotnet.com/2008/08/24/nhibernate-20-gold-released-must-wait-for-linq-to-nhibernate/

ゴールド リリース 2.0.0.GA

NH1.2.1GA から NH2.0.0 への重大な変更

  • インフラストラクチャー

    • .NET 1.1 はサポートされなくなりました
    • Nullables.NHibernate はサポートされなくなりました (.NET 2.0 の null 許容型を使用してください)
    • コントリビュートが移動しました。新しい場所
  • コンパイル時間

    • NHibernate.Expression 名前空間は NHibernate.Criterion に名前が変更されました
    • IInterceptor には追加のメソッドがあります。(IsUnsaved は IsTransient に名前が変更されました)
    • INnamingStrategy
    • 私はタイプする
    • IEntityPersister
    • IVersionType
    • IBatcher
    • IUserCollectionType
    • IEnhancedUserType
    • IPropertyAccessor
    • ValueTypeType を PrimitiveType に名前変更
  • 外部フレームワークの破壊的変更の可能性

  • さまざまなクラスがネームスペース間で移動されました
  • さまざまなクラスの名前が変更されました (Hibernate 3.2 の名前と一致するように)
  • ISession インターフェイスには追加のメソッドがあります
  • ICacheProvider
  • I基準
  • CriteriaQueryTranslator

  • 初期化時間

    • App.config の <nhibernate> セクションはサポートされなくなり、無視されます。構成ファイルと App.config の構成スキーマは同一になり、App.config セクション名は <hibernate-configuration> です。
    • <hibernate-configuration> には異なるスキーマがあり、すべてのプロパティ名がチェックされています
    • 構成プロパティに「hibernate.」という接頭辞が付けられなくなりました。「hibernate.dialect」を指定する前に、「dialect」のみを指定するようになりました</li>
    • すべての名前付きクエリは初期化時に検証され、有効でないものがある場合は例外がスローされます (必要に応じて無効にすることができます)。
    • プロキシ クラスのより厳密なチェック (すべてのパブリック メソッドは仮想である必要があります)

  • 実行時間

    • SaveOrUpdateCopy() は、元のエンティティを変更せずにエンティティの新しいインスタンスを返します
    • AutoFlush はトランザクション外では発生しません - データベース トランザクションはオプションではありません。データベースとのすべての通信は、データの読み取りまたは書き込みに関係なく、トランザクション内で発生する必要があります。
    • NHibernate は、SQL Server で count(*) クエリに対して long を返します
    • <式> には、必要に応じて括弧を含める必要があります
    • これらの HQL 関数名は、次の HQL 予約名で競合を引き起こす可能性があります。
      • 部分文字列
      • 見つける
      • トリム
      • 長さ
      • bit_length
      • 合体する
      • nullif
      • 腹筋
      • モッド
      • 平方根
      • アッパー
      • 低い
      • キャスト
      • エキス
      • 連結
      • current_timestamp
      • システム日付
      • 2番目
      • 時間
    • <any> meta-type="class" の場合、永続型は Class.FullName を含む文字列です
      • クエリでパラメーターを設定するには、SetParameter(”paraName”, typeof(YourClass).FullName, NHibernateUtil.ClassMetaType) を使用する必要があります。

  • マッピング

  • <any> : デフォルトのメタタイプは「string」です (以前は「class」でした)
  • 于 2008-08-26T17:36:49.687 に答える