3

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

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 - 错误定位服务器/指定的实例)

有谁知道我应该如何处理这个?我花了几个小时试图让它工作。

4

2 回答 2

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 Express 的 SQL Server Management Studio)?这使事情变得容易得多。

于 2013-01-15T09:50:42.073 回答
0

目前尚不清楚您使用的是哪个版本的 SQL Server。它是以太快递或紧凑型。

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

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

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

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

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

于 2013-01-15T06:36:41.910 回答