C# 无持久器:使用fluent hibernate保存数据时出错

C# 无持久器:使用fluent hibernate保存数据时出错,c#,nhibernate,asp.net-mvc-5,fluent-nhibernate,C#,Nhibernate,Asp.net Mvc 5,Fluent Nhibernate,我试图使用fluent hibernate将数据保存到我的DB表中,但它给了我“没有持久化器:”。我在网上尝试了很多可行的解决方案,但没有什么能帮我摆脱这种状况。有谁能帮我解决这个问题吗?我花了将近2天的时间才找到这个错误的原因,但仍然没有找到 private static ISessionFactory InitializeSessionFactory() { return Fluently.Configure().Database(MsSqlConfiguration.MsSql20

我试图使用fluent hibernate将数据保存到我的DB表中,但它给了我“没有持久化器:”。我在网上尝试了很多可行的解决方案,但没有什么能帮我摆脱这种状况。有谁能帮我解决这个问题吗?我花了将近2天的时间才找到这个错误的原因,但仍然没有找到

private static ISessionFactory InitializeSessionFactory()
{
    return Fluently.Configure().Database(MsSqlConfiguration.MsSql2012

   .ConnectionString(ConfigurationManager.ConnectionStrings["test"]
   .ConnectionString).ShowSql())
   .Mappings(m =>
    m.FluentMappings.AddFromAssemblyOf<Domain.Mapping.StatusMap>())
   .BuildSessionFactory();
}

public class StatusTypeTest
{
    public double Statusid { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public double? Createbyid { get; set; }

}

public class StatusMap : ClassMapping<StatusTypeTest>
{
    public StatusMap()
    {
        Schema("dbo");
        Table("Status");
        Lazy(false);
        Id(x => x.Statusid, map => map.Generator(Generators.Identity));

        Property(x => x.Title, map => map.Length(50));
        Property(x => x.Description, map => map.Length(250));
        Property(x => x.Createbyid, map => map.Precision(10));
    }
}



 StatusTypeTest obj= new StatusTypeTest(); 
 obj.Title = "test";
 obj.description = "My unit test";
 obj.createdBy = 1; 

 using (var session = Factory.OpenSession()) 
 { 
   using (ITransaction transaction = session.BeginTransaction())
    { 
      session.Save(obj);
      transaction.Commit(); 
    } 
  } 
私有静态ISessionFactory初始化SessionFactory()
{
流畅地返回.Configure().Database(MsSqlConfiguration.MsSql2012
.ConnectionString(ConfigurationManager.ConnectionString[“测试”]
.ConnectionString.ShowSql())
.Mappings(m=>
m、 FluentMappings.AddFromAssemblyOf())
.BuildSessionFactory();
}
公共类状态类型测试
{
公共双状态ID{get;set;}
公共字符串标题{get;set;}
公共字符串说明{get;set;}
public double?Createbyid{get;set;}
}
公共类状态映射:类映射
{
公共状态映射()
{
模式(“dbo”);
表(“状态”);
懒惰(假);
Id(x=>x.Statusid,map=>map.Generator(Generators.Identity));
属性(x=>x.Title,map=>map.Length(50));
属性(x=>x.Description,map=>map.Length(250));
属性(x=>x.Createbyid,map=>map.Precision(10));
}
}
StatusTypeTest obj=新的StatusTypeTest();
obj.Title=“测试”;
obj.description=“我的单元测试”;
obj.createdBy=1;
使用(var session=Factory.OpenSession())
{ 
使用(ITransaction transaction=session.BeginTransaction())
{ 
session.Save(obj);
Commit();
} 
} 

g。你可以在班级以下注册为单身汉

    public class SessionSource
    {
        private string _connectionStringProvider;
        public SessionSource(string connectionStringProvider)
        {
            _connectionStringProvider = connectionStringProvider;
        }

        public ISession GetSession()
        {
                var session = GetSessionFactory().OpenSession();
                return session;
        }

        private Configuration AssembleConfiguration(string connectionString)
        {
            return Fluently.Configure()
                    .Mappings(x => x.FluentMappings.AddFromAssemblyOf<MappingCandidate>())
                    .Database(() =>
                    {
                        return FluentNHibernate.Cfg.Db.MsSqlConfiguration
                            .MsSql2012
                            .ConnectionString(connectionString);
                    })
                    .BuildConfiguration();
        }

        private ISessionFactory GetSessionFactory()
        {
            var sessionFactory = AssembleConfiguration(_connectionStringProvider).BuildSessionFactory();
            return sessionFactory;
        }
    }

通过此操作,您可以确保已注册所有必需的映射。

然后检查是否调用了
StatusMap
构造函数(放置断点)否its not calling然后您需要找出它不调用的原因。检查是否调用了
InitializeSessionFactory
 using (var session = _sessionSource.GetSession())
 {