所以我一直在用 NHibernate 做一些工作,虽然我所看到的大部分都很棒,但有一件事有点令人沮丧。如果我尝试查询某些对象并且在 hbm 文件中或与 hbm 文件之间存在映射问题,通常没有迹象表明存在映射问题,它只是不返回任何结果。
一个简单的例子是,如果我忘记将 hbm 文件设置为嵌入资源,然后执行 a session.Query<Variable>().ToList()
,则没有迹象表明变量没有映射,它只是返回一个空列表。
有没有办法告诉 NHibernate 抛出异常或以其他方式表明在这种情况下映射存在问题?
这确实会导致异常:
_session.Get<Variable>(1)
但这些不会:
_session.Query<Variable>().Where(e => e.VariableId == 1).ToList()
_session.CreateCriteria(typeof(Variable)).Add(Restrictions.Eq("VariableId",1)).List<Variable>();
希望这是我做错的事情,或者可以配置的事情,否则它可能会成为使用 NHibernate 的交易破坏者。我可以在我自己的单元测试中相对容易地捕捉到这些东西,但是当其他开发人员开始接触它时,我可以看到这变成了一个错误的节日。