0

はNHibernateは/流暢NHibernateはのセッションと構成を管理するためのインターネット上の時代遅れのドキュメントを読んで多くの時間後、私は実際にXMLを使用せずに動作するコンフィギュレーションを得た、私のPOCOのマップファイルがWebProjectで作業し、私はほとんど興奮した。のNHibernateのSessionFactoryとマッピングの問題

ただし、私は、実際の層にISessionFactoryを返すヘルパークラスを移動するとき、それは私がちょうど何EntitesセッションファクトリーからISessionを取得していない、何も動作、エラーなし、である必要があります。私はこのクラスのプロパティを使用して私の工場を元に戻しています。 ここに行くには、ある種のエラーが大きいでしょう。 CODE:次のように私は簡単にトラブルシューティングを行うためにすべての私のウィンザーコンテナの設定をリッピングしている

public class NhibernateSessionFactoryHelper 
{ 
    private static ISessionFactory _sessionFactory; 

    private static string _connectionString = 
     ConfigurationManager.ConnectionStrings["SqlConnectionString"].ToString(); 
    public static ISessionFactory SessionFactory 
    { 
     get 
     { 
      if (_sessionFactory == null) 
      { 
       _sessionFactory = BuildSessionFactory(); 
      } 
      return _sessionFactory; 
     } 
    } 

    public static ISessionFactory BuildSessionFactory() 
    { 
     var cfg = 
      Fluently.Configure().ProxyFactoryFactory(typeof(ProxyFactoryFactory).AssemblyQualifiedName).Mappings(
       m => m.FluentMappings.AddFromAssemblyOf<Category>()).Database(MsSqlConfiguration.MsSql2008.ConnectionString(_connectionString)).Cache(c => c.UseQueryCache()); 
     return cfg.BuildSessionFactory(); 

    } 
} 

ので、私は基本的なセットアップを持っています。

Web.UI --->エンティティ(category.cs) --->マッピング(categoryMap.cs) ---> POCO /エンティティのFactoryGoo(NHibernateSessionFactory.cs

CODE

私が先に述べたように、すべてのクラスが住んでたときにマッピング

public class CategoryMap : ClassMap<Category> { 

    public CategoryMap() { 
     Table("Categories"); 
     LazyLoad(); 
     Id(x => x.CategoryID).GeneratedBy.Identity().Column("CategoryID"); 
     Map(x => x.CategoryName).Column("CategoryName").Not.Nullable().Length(50); 
     Map(x => x.CategoryDescription).Column("CategoryDescription").Not.Nullable(); 
     Map(x => x.ParentCategoryID).Column("ParentCategoryID"); 
     Map(x => x.DisplayOrder).Column("DisplayOrder"); 
     Map(x => x.Active).Column("Active").Not.Nullable(); 
     Map(x => x.DateCreated).Column("DateCreated").Not.Nullable(); 
     Map(x => x.LastUpdated).Column("LastUpdated").Not.Nullable(); 
    } 
} 

ため

public class Category { 
    public Category() { } 
    public virtual int CategoryID { get; set; } 
    public virtual string CategoryName { get; set; } 
    public virtual string CategoryDescription { get; set; } 
    public virtual System.Nullable<int> ParentCategoryID { get; set; } 
    public virtual System.Nullable<int> DisplayOrder { get; set; } 
    public virtual int Active { get; set; } 
    public virtual string DateCreated { get; set; } 
    public virtual string LastUpdated { get; set; } 
} 

コードは、だから、私は私のエンティティと私のデータを取得します同じアセンブリ。私は私のSessionManagementプロジェクトに私のSessionFactoryを移動したり、Infrastructure.Data.MappingsプロジェクトへのマッピングとDomain.Entitiesプロジェクト何も実体は動作し、私は理由としてエラーをGTないとき。これを読んでため

おかげで、私は、セットアップのアイデアを得るためにするために、私は十分に投稿している願っています。

答えて

0

はBuildSessionFactory方法で参照カテゴリクラスが予想される名前空間/プロジェクトでカテゴリクラスを参照していることを確認します。つまり、異なるプロジェクトに複数のカテゴリ・クラスが存在する可能性があります。

0

私はもちろんわからないんだけど、私はあなたのカテゴリに親カテゴリをリンクするためのもの、それは同じタイプであると思いますか?そうであれば、categoryIdの代わりにプロパティとしてfull blownカテゴリオブジェクトを使用し、Map()は使用せず、流暢なReferences()を使用してください。

関連する問題