2011-07-12 10 views
0

私は私のお尻をグーグルして、私の問題の解決策を見つけることができないようです。 私はここでデモプロジェクトを取得しようとしている:私は正しくのSessionFactoryを作成することができないようhttp://wiki.fluentnhibernate.org/Getting_started SQLサーバー2008流暢なNHibernate entitiyクラスのための苦労者

で動作するようにします。

コード:

private static ISessionFactory CreateSessionFactory() 
    { 
     try 
     { 
      return Fluently.Configure() 
          .Database(MsSqlConfiguration.MsSql2008 
           .ConnectionString(c => c 
            .Server("localhost") 
            .Database("gisli") 
            .TrustedConnection()).ShowSql()) 
          .Mappings(m => { 
           m.HbmMappings.AddFromAssemblyOf<Employee>(); 
           m.HbmMappings.AddFromAssemblyOf<Store>(); 
           m.HbmMappings.AddFromAssemblyOf<Product>(); 

          }) 
        .BuildSessionFactory(); 


     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e.Message); 
      if(e.InnerException !=null) 
       Console.WriteLine(e.InnerException.Message); 
       return null; 
     } 
    } 

私はまた、自動マッピングを使用しようとしましたし、それを動作させることができていません。

私のエンティティクラスはすべて公開されています。エンティティ・クラスとマッピングクラスの

例:

public class Product 
{ 
    public virtual int Id { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual double Price { get; set; } 
    public virtual IList<Store> StoresStockedIn { get; set; } 

    public Product() 
    { 
     StoresStockedIn = new List<Store>(); 
    } 
} 

public class ProductMap : ClassMap<Product> 
{ 
    public ProductMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.Price); 
     HasManyToMany(x => x.StoresStockedIn) 
      .Cascade.All() 
      .Inverse() 
      .Table("StoreProduct"); 
    } 
} 

編集:私はまた、この試み

private static ISessionFactory CreateSessionFactory() 
    { 
     return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c =>    c.Server(".").Database("gisli").TrustedConnection())) 
      .Mappings(m => 
      m.FluentMappings.AddFromAssemblyOf<Program>()) 
      .BuildSessionFactory(); 
    } 

EDIT: 第二の例は、実際には溶液です。私は偶然プロジェクトの名前をFluentNHibernateという名前にしていましたが、プロジェクトの名前を変更したときにどのように混乱してしまったのでしょうか。 私はそれを台無しにどこに見えることができますか?

心から Gísli

答えて

2

あなたの最初の例では、実際に流暢なマッピング、唯一のHBMマッピングが含まれていません。

マッピングがProgramと同じアセンブリ内にある場合は、2番目の例が有効です。

+0

2番目の例では、「マッピングドキュメント(XML Documnt)をコモライズできませんでした」というメッセージが表示されます。詳細を表示すると、永続クラスNAMESPACE.CLASSNAMEが見つかりません。その後、内部例外としてFluentNHibernateアセンブリをロードできませんでした。 – Gisli

+0

それは命名の問題でした。 2番目の例は動作します。助けてくれてありがとう – Gisli

関連する問題