2012-03-14 14 views
1

流暢なnhibernateでコンポーネントを使用しようとしていて、以下のエラーが発生しています。流暢なNhibernateコンポーネントの使い方

FluentNHibernate.Cfg.FluentConfigurationException:SessionFactoryの作成中に無効な構成または不完全な構成が使用されました。 PotentialReasonsコレクションをチェックし、詳細についてはInnerExceptionをチェックしてください。

下記のコードは正しく表示されているのですか、何か不足していますか?

以下

は、エンティティのマップが

public class LinerMap : ClassMap<Liner> 
{ 
    public LinerMap() 
    { 
     Table("Liner"); 
     Id(l => l.Id); 
     Component(l => l.Thickness);    
    } 
} 

ある

public class Liner 
{ 
    public virtual int Id { get; set; } 
    public virtual Thickness Thickness { get; set; } 
} 

以下のように私は私のエンティティクラスでそれを実装している

public class Thickness 
{ 
    public string Name { get; set; } 
    public byte ThicknessSize { get; set; } 
} 

を再利用するために、オブジェクトのIM ttryingです構成は以下のようになります

public static ISessionFactory CreateSessionFactory() 
    { 

     return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c 
       .Server("XXXXX") 
       .Database("XXXXX") 
       .Username("XXXXXXXXXX") 
       .TrustedConnection())) 
      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Liner>()) 
      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Thickness>()) 
      .BuildSessionFactory(); 
    } 

私は流暢ウィキは、この機能は、したがって、明示的に.mappingメソッドを使用アイブが、これは十分

ある場合イムわからない任意のアイデアは感謝して歓迎されるだろう自動マッピングのために動作しないと言うことに気付きましたGB

+2

InnerException(他のInnerExceptionsがある可能性があります)を見ましたか?多くの場合、スタックトレースには手がかりが埋め込まれています。 –

+0

また、Componentメソッドが何を行うのか、そしてそれがどのような名前空間から来るのかを記述することができます。私はそれが[ClassMap](http://fluentnhibernate.org/api/FluentNHibernate.Mapping/ClassMap%601.htm)のドキュメントにリストされているのを見ません。 –

+0

CLASSMAPを使用しているため、オートマッピングが失われました。自動化を取得する場合は、OVERRIDESを使用する必要があります。 – BradLaney

答えて

1

Component methodに少し掘りをして、あなたのコードは、その機能を使用しようとしている場合、それは別のパラメータを必要とします。私はそれが書かれている方法をコンパイルする理由はわかりませんが、参照プロパティのパラメータとその参照プロパティのマッピングを記述する2つのパラメータが必要です。

+0

後でコンポーネントメソッドをよく見ていきます。私はすでに流暢なwikiを使ってきましたが、私は再び見て、後で試してみます。 – beaumondo

+0

最後に、私はコンポーネントを残して別のエンティティを作成することにしました – beaumondo

関連する問題