C# 从数据库读取时出现nhibernate会话问题
我用nhibernate在DB中提交了一些数据C# 从数据库读取时出现nhibernate会话问题,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我用nhibernate在DB中提交了一些数据 TimeSlices newTimeSlices = new TimeSlices(timeSliceStartTime, timeSliceEndTime, schedule, newScheduleDay); tsDao.Save(newTimeSlices); tsDao.CommitChanges(); 但是我试着读这些数据 public Sc
TimeSlices newTimeSlices = new TimeSlices(timeSliceStartTime, timeSliceEndTime, schedule, newScheduleDay);
tsDao.Save(newTimeSlices);
tsDao.CommitChanges();
但是我试着读这些数据
public ScheduleDays GetByDate(DateTime date, Schedules schedule)
{
NHibernateSession.Refresh(schedule);
DateTime tmpDate = new DateTime(date.Year, date.Month, date.Day, 0, 0, 0);
return NHibernateSession.CreateCriteria(typeof (ScheduleDays))
.Add(Restrictions.Eq(ScheduleDaysProperties.Date.ToString(), tmpDate))
.Add(Restrictions.Eq(ScheduleDaysProperties.Schedule.ToString(), schedule))
.UniqueResult<ScheduleDays>();
}
timeSliceStartTime、timeSliceEndTime和newTimeSlices的类型为od DateTime
明细表是DB对象类型(表明细表)
newScheduleDay是DB对象类型(表ScheduleDays)
我正在使用C#+fluent nhibernate 1.1
映射和延迟加载或asbag可能有问题吗?或者可能有什么问题?我不知道问题出在哪里,但下面是我调试它的方法:
nHibernate不会缓存查询,除非。我不知道问题出在哪里,但下面是我调试它的方法:
nHibernate不会缓存查询,除非。您可以运行nHibernate探查器并查看触发的查询。同样的链接是nhprof.com 谷歌看看如何使用nhprof它很简单。
希望这对您有所帮助,您可以运行nhibernate profiler并查看触发了什么查询。同样的链接是nhprof.com 谷歌看看如何使用nhprof它很简单。
希望这对优秀的调试步骤有所帮助。我发现第2步和第3步总是非常有用,以至于在开发过程中,我在所有项目上都默认使用SQL登录。@Ragesh-哇,小心,如果你将二进制blob推送到数据库中,它实际上会对完整的二进制进行十六进制编码和记录payload@fostandy,这是一个很好的观点。就个人而言,我从来没有遇到过这个问题,因为我非常努力地让blob远离DB。当然,我只在开发过程中打开日志记录。+1表示出色的调试步骤。我发现第2步和第3步总是非常有用,以至于在开发过程中,我在所有项目上都默认使用SQL登录。@Ragesh-哇,小心,如果你将二进制blob推送到数据库中,它实际上会对完整的二进制进行十六进制编码和记录payload@fostandy,这是一个很好的观点。就个人而言,我从来没有遇到过这个问题,因为我非常努力地让blob远离DB。当然,我只在开发期间打开日志记录。
public ScheduleDaysMap()
{
Id(x => x.ScheduleDayId);
Map(x => x.Date)
.Not.Nullable();
Map(x => x.MinutesOrderInterval)
.Not.Nullable();
References(x => x.Schedule)
.Column(TableNames.ScheduleId)
.Not.Nullable()
.LazyLoad();
HasMany(x => x.Orders)
.KeyColumn(TableNames.ScheduleDayId)
.Inverse()
.LazyLoad()
.AsBag();
HasMany(x => x.TimeSlices)
.KeyColumn(TableNames.ScheduleDayId)
.Inverse()
.LazyLoad()
.AsBag();
Version(x => x.Timestamp);
}