SQL Server Express连接字符串/ FluentNHibernate

时间:2013-01-14 23:27:42

标签: c# sql sql-server fluent-nhibernate connection-string

我的连接字符串存在一些问题。我一直在测试很多不同的字符串和方法,现在我被卡住了。

private static void InitializeSessionFactory()
{
    _sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
                          .ConnectionString(
 @"Server=Data Source=.\SQLEXPRESS;DataBase=carDB.mdf;User ID=sa;Password=xxxSecretxxx;")
                          .ShowSql()
            )
            .Mappings(m =>
                      m.FluentMappings
                          .AddFromAssemblyOf<Car>())
            .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, false))
            .BuildSessionFactory(); 
    }

(我知道我根本不应该使用'sa' - 为什么我这样做只是因为缺乏管理软件所以我不得不使用唯一的帐户)

我使用的是SQL Server Express数据库。

我得到的例外是:

  

创建SessionFactory时使用了无效或不完整的配置   检查PotentialReasons集合,以及InnerException以获取更多详细信息。

这是我的内部异常

  

与网络相关或特定于实例的错误   在建立与SQL Server的连接时发生   未找到服务器或无法访问服务器   验证实例名称是否正确   SQL Server配置为允许远程连接   (提供者:SQL网络接口,   错误:26 - 找到指定的服务器/实例时出错

有谁知道我应该怎么做?我花了好几个小时试图让它发挥作用。

2 个答案:

答案 0 :(得分:4)

在连接字符串中,不指定数据库文件,而是指定数据库名称。所以它不应该是

@"Server=Data Source=.\SQLEXPRESS;DataBase=carDB.mdf;User ID=sa;Password=xxxSecretxxx;"

但是

@"Server=Data Source=.\SQLEXPRESS;DataBase=carDB;User ID=sa;Password=xxxSecretxxx;"

前提是数据库的名称为carDB,而其他名称与Cars不同。

另外,我建议使用SqlConnectionStringBuilder类来构建连接字符串,因为它保证了语法上正确的连接字符串。

旁注:您确实知道可以为Express版安装管理工具(如SQL Server Management Studio for SQL Server Express)吗?这使事情变得更容易。

答案 1 :(得分:0)

目前尚不清楚您正在使用的SQL Server版本。它是ether Express或Compact。

如果是SQL Express,那么试试这个:

@"Data Source=.\SQLEXPRESS;Initial Catalog=carDB;User ID=sa;Password=********;"

对于SQL Compact,通常足以指定db文件的路径和名称:

@"Data Source=path\\carDB.sdf;"

但对于SQL Compact,您可能需要另一个提供程序MsSqlCeConfiguration.Standard