之後,在因特網上閱讀過時的文檔來管理NHibernate/Fluent Nhibernate的會話和配置,我實際上得到了一個不使用XML的配置,我的poco和map文件在WebProject中工作,我幾乎感到興奮。NHibernate SessionFactory和映射問題
但是;當我移動返回ISessionFactory的幫助器類到它應該在的實際層時,沒有任何工作,沒有錯誤,我從Session Factory獲得一個ISession,只是沒有Entites。請注意我正在使用這個類的屬性來讓我的工廠回來,我自我解釋我知道。 某種錯誤在這裏會很棒。 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) ---> FactoryGoo(NHibernateSessionFactory.cs
CODE對於POCO /實體
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; }
}
的映射
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();
}
}
因此,正如我先前所說,我讓我的實體,我的數據時,所有的類生活在代碼相同的組件。當我將SessionFactory移動到我的SessionManagement項目或映射到Infrastructure.Data.Mappings項目和實體到Domain.Entities項目時,什麼都不起作用,我不知道爲什麼。
感謝您閱讀本文,我希望我已經發布足夠的內容讓您瞭解該設置。