【问题标题】:Trying to make fluent NHibernate work, what's FluentConfiguration.cs?试图使流畅的 NHibernate 工作,FluentConfiguration.cs 是什么?
【发布时间】:2011-08-25 18:45:15
【问题描述】:

我正在尝试遵循 this 教程,但 VS 调试器一直要求我提供一个名为 FluentConfiguration.cs 当它到达这一行时:

return Fluently.Configure()
    .Database(MySQLConfiguration.Standard
    .ConnectionString(c => c
        .Server("localhost")
        .Database("test")
        .Username("root")
        .Password("w1e2a3r4")))
    .Mappings(m => m
        .AutoMappings.Add(model))
    .ExposeConfiguration(BuildSchema)
        .BuildSessionFactory();  

除了这一行(我使用的是 MySql)之外,我的所有代码都与教程中的完全相同。我检查了三次参数,应该没问题..
我得到的是一个对话框,要求我找到 FluentConfiguration.cs,当它找不到它时,它会给出:

An invalid or incomplete configuration was used while creating a SessionFactory.    
Check PotentialReasons collection, and InnerException for more detail.

我尝试从here 复制此文件,但效果不佳。

我在这里错过了什么?
技术信息-我使用的是 VS 2010 express、ASP.NET MVC3、MySQL server 5.5 和连接器:6.3.6

编辑:
这是内部异常的消息:
无法从 NHibernate.Driver.MySqlDataDriver、NHibernate、Version=2.1.2.4000、Culture=neutral、PublicKeyToken=aa95f207798dfdb4 创建驱动程序。

编辑 2:
现在我得到“校验和不匹配:
查找 'd:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs' 的源代码。校验和:MD5 {94 f4 4c 43 49 bd 48 fb 9a d7 b2 fc 5 e1 4e d8} 确定校验和是否与以下位置匹配: 1: C:\Users\Oren\Desktop\FluentConfiguration.cs 校验和:MD5 {84 33 30 45 11 da 3d 40 8e 2d 3c a9 e 7c cc 14} 校验和不匹配。 文件 'd:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs' 不存在。 在脚本文档中查找 'd:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs'... 在项目中查找 'd:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs'。 该文件在一个项目中找到:'C:\Users\Oren\Desktop\FluentConfiguration.cs'。 确定校验和是否与以下位置匹配: 1: C:\Users\Oren\Desktop\FluentConfiguration.cs 校验和:MD5 {84 33 30 45 11 da 3d 40 8e 2d 3c a9 e 7c cc 14} 校验和不匹配。 查看目录 'C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\vc7\atlmfc'... 查看目录 'C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\vc7\crt'... 查看目录'C:\Users\Oren\Desktop\'... 活动解决方案的调试源文件设置表明调试器不会要求用户查找文件:d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs。 调试器找不到源文件 'd:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs'。

【问题讨论】:

  • 我怀疑您的具体错误是由于 NHibernate 无法解析 Mysql.Data 程序集(这是 Mysql 的 ADO 提供程序)。尝试将其添加到您的项目引用路径中,或者(不太优先)将其放入二进制文件的工作目录中
  • 感谢您的评论,我认为这让我进步了一点,但问题还没有解决。请参考我的第二次编辑。谢谢。

标签: fluent-nhibernate


【解决方案1】:

再次复制粘贴流畅的hibernate dll和pdb,问题就解决了。

【讨论】:

    【解决方案2】:

    来解决这个问题。我必须添加对 NHibernate.ByteCode.Castle.dll 的引用

    【讨论】:

      【解决方案3】:

      调试器正在请求 Fluent nHibernate 的源文件之一。您可以下载它,因为它是开源的并详细调试它,尽管答案在 InnerException 中。

      这可能是由于尚未映射的类或可能未将属性标记为虚拟的属性,或者仅仅是不遵循标准 FNH 约定的数据库表。您需要访问 InnerException 并阅读它所说的内容,因为 nHibernate 异常通常非常有帮助。当我尝试运行运行 MSTest 的单元测试时,我在处理内部异常时遇到了很多麻烦。我切换回 nUnit 并没有遇到任何问题。

      另一件非常有用的事情是在配置过程中输出您的 .hbm 文件(FNH 在幕后为您生成这些文件)。有关详细信息,请参阅Generate XML mappings from fluent Nhibernate。注意:我通常会添加一个编译器指令,以确保我只在调试版本中输出 .hbm 文件。

      【讨论】:

      • 你能指导我在内部异常中寻找什么吗?我在问题中添加了我认为可能有用的唯一内容,但我真的看不出那里的原因。
      • @fostandy 是正确的。内部异常表明 mySQL 驱动程序未正确加载。您应该查看程序集是否将其放入站点的 bin 目录中。
      • 至于您的第二次编辑,该消息只是 Visual Studio 试图定位源文件以便调试错误。
      猜你喜欢
      • 2010-11-23
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      相关资源
      最近更新 更多