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