实体框架代码优先的SQL Server Express连接字符串

Gil*_*lit 38 entity-framework connection-string code-first sql-server-express

我在Visual Web Developer 2010 Express中工作,并使用Entity Framework代码优先CTP.我能够使用新的SQL Server CE执行此操作,但我无法找到与SQL Server Express一起使用的连接字符串.

这个使用SQL Server CE beta,工作正常(数据库是在模型更改时创建和重新创建的).

<add name="TrempimModel"
     connectionString="data source=|DataDirectory|TrempimModel.sdf"
     providerName="System.Data.SqlServerCe.4.0" />
Run Code Online (Sandbox Code Playgroud)

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

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

在启动时给出以下消息:

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

那么如何使它与SQL Server Express一起使用?

mar*_*c_s 61

这里你的连接字符串的问题是:

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

您基本上定义了您要连接的"服务器" - 但您没有说要连接到文件中的数据库.此外 - 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" />
Run Code Online (Sandbox Code Playgroud)

然后它应该工作得很好.

有关更多背景和大量样本,请查看ConnectionStrings网站.