38

我在 Visual Web Developer 2010 Express 中工作,并使用实体框架代码优先 CTP。我可以使用新的 SQL Server CE 执行此操作,但我无法找到与 SQL Server Express 一起使用的连接字符串。

这个使用 SQL Server CE 测试版,工作正常(数据库在模型更改时创建和重新创建)。

<add name="TrempimModel"
     connectionString="data source=|DataDirectory|TrempimModel.sdf"
     providerName="System.Data.SqlServerCe.4.0" />

这个,我从aspnetdb连接字符串中复制的,

<add name="TrempimModel"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
     AttachDBFilename=|DataDirectory|TrempimModel.mdf;User Instance=true"
     providerName="System.Data.SqlClient" />

在启动时给出以下消息:

无法完成操作。提供的 SqlConnection 未指定初始目录

那么如何让它与 SQL Server Express 一起工作呢?

4

1 回答 1

61

您的连接字符串的问题是:

<add name="TrempimModel"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
                       AttachDBFilename=|DataDirectory|aspnetdb.sdf;
                       User Instance=true"
     providerName="System.Data.SqlClient" />

您基本上是在定义要连接的“服务器”-但您并没有说要连接到文件中的哪个数据库。此外 - SQL Server Express 数据库文件的文件扩展名是.mdf(不是.sdf- 那是 SQL Server Compact Edition) - 您也需要考虑到这一点!根据 OP 的评论,这是一个错字)。

您需要在连接字符串中定义一个额外的database=....(或):Initial Catalog=.....

<add name="TrempimModel"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
                       database=YourDatabaseName;
                       AttachDBFilename=|DataDirectory|aspnetdb.mdf;
                       User Instance=true"
     providerName="System.Data.SqlClient" />

然后它应该工作得很好。

有关更多背景和大量示例,请查看ConnectionStrings网站。

于 2010-11-07T09:28:40.417 回答