Fluent Nhibernate 与 MySQL 的连接字符串

Posted

技术标签:

【中文标题】Fluent Nhibernate 与 MySQL 的连接字符串【英文标题】:Connection string for Fluent Nhibernate with MySQL 【发布时间】:2011-09-27 10:19:46 【问题描述】:

我已经查看了How to configure Fluent NHibernate with mysql 的帖子,但我对 MySQL 比较陌生,我需要实际设置连接字符串本身。我已经安装了 MySQL 作为 WAMP 安装的一部分,需要填写实际的连接字符串。有人可以通过扩展链接答案以实际包含完整的连接字符串示例来帮助我吗?

赞赏。

编辑:我尝试了几种不同的方法,但不断收到以下错误消息:

Can't load file FluentConfiguration.cs under d:\Builds\FluentNH-v1.x-nh3\src\FluentNHibernate\Cfg.
Check the file permission and the existence of that file.

我通过 nuget 安装了 FNH,但我不明白为什么它会查看该路径,因为 d: 驱动器是我的 CD 而不是硬盘。很困惑。

【问题讨论】:

【参考方案1】:

您粘贴的错误看起来像 Visual Studio 试图本地化源以向您显示异常的来源。这不是真正的异常消息 - 您应该在某处有它,它可能与错误配置有关。

如果您使用默认设置安装了 WAMP,它被配置为侦听 3306 端口,并且只有本地 root 帐户没有密码。所以你的连接字符串应该看起来像这样:

Server=localhost; Port=3306; Database=[database_name_here]; Uid=root; Pwd=;

Pwd= 部分可能根本不需要)。

所以你需要把它粘贴到你的App.config/Web.config<connectionStrings>部分:

<connectionStrings>
    <add name="ConnectionString" 
         connectionString="Server=localhost; Port=3306; 
              Database=[database_name_here]; Uid=root; Pwd=;" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

然后使用链接问题中的解决方案:

MySqlConfiguration.Standard.ConnectionString(
    c => c.FromConnectionStringWithKey("ConnectionString")
)

或者,您可以将连接字符串直接粘贴到 Fluent 的配置中,如下所示:

MySqlConfiguration.Standard
    .ConnectionString.Is("Server=localhost; Port=3306;
        Database=[database_name_here]; Uid=root; Pwd=;")

无论如何,这个默认的root/无密码配置只能用于本地开发和测试目的。

【讨论】:

感谢您的信息,我发现隐藏在异常中的错误是它找不到服务器,我指定了“MySQL”,因为那是我的 MySQL Workbench 实例中列出的内容。将该参数更改为“localhost”修复它。

以上是关于Fluent Nhibernate 与 MySQL 的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Fluent-NHibernate 和 MySQL 指定自动递增 (int) 标识列

问题 Fluent Nhibernate Mapping MySQL Time(6) to C# DateTime

Fluent nhibernate m-to-m 与外部表的映射

使用 Fluent NHibernate 生成表索引

Fluent NHibernate 忽略 ClassMap 中的属性,使用 FluentMappings

Fluent NHibernate 实体 HasMany 不同子类类型的集合