2011-03-18 9 views
0

最近NHibernate 3.1をダウンロードしてインストールしました。 3.0のインストールでコピーした2つの新しいDLLがあります。質問#1:これは私がする必要がありますか?NHibernate 3.1が私のコードを壊していますか?

私のシステムでは、カスタムIDジェネレータを実装しましたが、3.0で動作しますが、3.1でIDジェネレータ戦略を解釈できませんでした。他の変更はありませんでした。質問#2:3.1で何が変わったのですか?私が3.0で行ったことはもう機能しませんでしたか?

私のカスタムジェネレータクラスの例を次に示します。

public class IdGenerator : TableGenerator 
{ 
    public override object Generate(ISessionImplementor session, object obj) 
    { 
     if(session.Connection.ToString().ToLower().IndexOf("sqlclient") > 0) 
     { 
      IQuery query = session.GetNamedSQLQuery("GenerateSQLServerId"); 
      return Convert.ToInt32(query.UniqueResult()); 
     } 
     else if (session.Connection.ToString().ToLower().IndexOf("oracle") > 0) 
     { 
      IQuery query = session.GetNamedSQLQuery("GenerateOracleId"); 
      return query.List()[0]; 
     } 

     return null; 
    } 
} 

そして、私が持っている私のhbm.xmlファイル内:

<id name="Id" column="ID" type="int"> 
    <generator class="Namespace.IdGenerator, Namespace" /> 
</id> 

私が言ったように、それはすべてではなく3.1で、3.0で正常に働きました。おそらくそれはインストールの問題です...任意のアイデアですか?

答えて

0

質問#1 - これは私がやったことであり、今はバージョン3.1になっているようです。

質問#2 - システムに新しいメソッドを実装する前に、クラスライブラリを使用してNHibernateのすべての機能をホストし、次にテストするためのアプリケーションをインストールします。私はコンソールアプリケーションで3.1への参照を変更し、私のクラスライブラリで同じことをするのを忘れました。同じバージョンで両方を取得すると、「IDジェネレータ戦略を解釈できませんでした」というエラーメッセージが消え、すべて正常に機能しました。私のカスタムジェネレータには何も問題はありません。

+0

質問#1 - リリースノートに** ILMerge AntlrとReLinq **が記載されています。リリースで提供されたDLLだけを使用して動作させることができました。クールで、少ないDLL! – Benjamin

関連する問題