获取数据在返回总是空
我试图用线与NHibernate来从EngineEvaluation表中的数据:获取数据在返回总是空
using (ISession session = OpenSession())
{
var c = session.QueryOver<EngineEvaluation>().List();
return c;
}
但C总是空虽然表不为空。
我这样的映射表:
internal class EngineEvaluationMap : ClassMap<EngineEvaluation>
{
public EngineEvaluationMap()
{
Table("EngineEvaluation");
Id(evaluation => evaluation.Id).GeneratedBy.Assigned();
Map(evaluation => evaluation.EngineSessionId).Nullable();
Map(evaluation => evaluation.Result).Nullable().Length(4001); // set length over 4000 to cause nvarchar (MAX)
Map(evaluation => evaluation.Parameters).Nullable();
Map(evaluation => evaluation.Score).Nullable();
Map(evaluation => evaluation.IgnoreScore).Nullable();
References(evaluation => evaluation.Engine).Not.Nullable();
References(evaluation => evaluation.EngineVersion).Not.Nullable();
HasMany(evaluation => evaluation.StatusChanges)
.Component(component =>
{
component.Map(change => change.ParentId).Formula("EngineEvaluationId");
component.Map(change => change.StatusChangeIndex).Formula("StatusChangeIndex");
component.Map(change => change.Timestamp).Not.Nullable();
component.Map(change => change.Status)
.CustomType<EnumStringType<EngineEvaluationStatus>>()
.Not.Nullable();
component.Map(change => change.Details).Length(4001); // set length over 4000 to cause nvarchar (MAX)
})
.KeyColumn("EngineEvaluationId")
.AsList(index => index.Column("StatusChangeIndex"))
.Table("EngineEvaluationStatusChanges")
.Cascade.AllDeleteOrphan();
HasMany(evaluation => evaluation.Errors)
.Component(component =>
{
component.Map(comment => comment.Timestamp).Not.Nullable();
component.Map(comment => comment.Message).Not.Nullable();
component.Map(comment => comment.ErrorLevel).CustomType(typeof(ErrorLevel)).Not.Nullable();
})
.AsList(index => index.Column("ErrorIndex"))
.Table("EngineEvaluationErrors")
.Cascade.AllDeleteOrphan();
}
}
什么可以是问题,或者我怎么能发现问题?
到目前为止,解决几乎所有NHibernate问题的最便利的工具是NHibernate Profiler,由一家由最大的NH贡献者之一Ayende运营的公司维护。
你可以在这里找到更多的信息:https://www.hibernatingrhinos.com/products/nhprof
我认为EngineEvaluationMap
必须是公开的,所以它可能是没有被加载。有一个已知的问题,NHibernate默默地忽略QueryOver的未映射类。你也可以做的是启用日志记录,以确保你正在发出一个SQL查询。
你能链接到问题“已知”的位置吗? AFAIK它抛出异常... – MarioDS
当然:https://weblogs.asp.net/ricardoperes/nhibernate-pitfalls-querying-unmapped-classes。 –
好吧,没有违法,但你只是链接到你自己的博客。我的意思是,你能否链接到备份此类声明的其他资源。如果没有,你能否至少指定哪些版本的NHibernate会暴露这种行为。我知道我们广泛使用LINQ api,我赞成它用于新的开发,并且我非常确定,我清楚地记得在查询和出错时收到“MappingException”。 – MarioDS
连接字符串指向正确的数据库? – mjwills
输出生成的sql – Fran
连接没问题,因为其他表格工作正常。 –