【问题标题】:Unable to locate persister for the entity, no code has changed无法找到实体的持久化器,代码未更改
【发布时间】:2013-10-18 23:42:30
【问题描述】:

我突然收到错误消息:“无法找到名为 'MyLib.Project' 的实体的持久化器。”

自上次发布以来,我没有对这个项目进行任何代码更改。我进入代码查看它的原因是因为用户报告使用该库的网页出现错误。我还根据 (NHibernate - Random occurrences of "Unable to locate persister") 检查了提供程序的热切加载,但我已经在热切加载。

此外,我什至将数据提供程序配置更改为:

.Mappings(Function(x) x.FluentMappings.AddFromAssemblyOf(Of Project)())

我单步执行了代码,实际上看到它找到了项目映射并单步执行。构建提供程序时没有抛出异常,但是当我尝试从数据库中获取项目时,Web 应用程序仍然失败。

更新 我已经用桌面应用程序测试了同样的代码,它工作得很好。在我看来,问题一定出在 NHibernate 和 Web 应用程序上。有人对此有什么特别的想法吗?

【问题讨论】:

  • 关闭解决方案并重新打开它 - 仍然出错?
  • 是的,即使重新打开解决方案,这个问题仍然存在。
  • 记录内部异常,无论发生此错误。内部异常通常应该告诉你原因是什么
  • 内部异常是Nothing

标签: vb.net nhibernate fluent-nhibernate


【解决方案1】:

答案当然是我犯了一个错误。

我在同一个程序中使用了两个会话工厂,并且我将一个会话从错误的工厂传递给了我的一个函数。所以错误是正确的,因为它传递的会话不知道Project 类型。通过查看我正在查询的会话的Connection 属性,我最终发现了这一点。

希望这可以帮助其他可能犯过同样错误的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2015-07-27
    相关资源
    最近更新 更多