连接字符串 C# Entity Framework SQL Server Express

Posted

技术标签:

【中文标题】连接字符串 C# Entity Framework SQL Server Express【英文标题】:Connection string C# Entity Framework SQL Server Express 【发布时间】:2016-09-05 13:31:10 【问题描述】:

我将 C# WPF EF6.0 和 SQL Server Express 用于最终程序。

我使用高级安装程序创建了一个安装文件,该安装程序通过脚本和 SQL Server Express 在中创建数据库

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

我已经改变了我的字符串连接

<add name="MyDBEntities" 
     connectionString="metadata=res://*/MyDBModel.csdl|res://*/MyDBModel.ssdl|res://*/MyDBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\MyDB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

到这里

<add name="MyDBEntities" 
     connectionString="metadata=res://*/MyDBModel.csdl|
                       res://*/MyDBModel.ssdl|
                       res://*/MyDBModel.msl;
                       provider=System.Data.SqlClient;
                       provider connection string=&quot;
                             Data source=.\SQLExpress;
                             integrated security=True;
                             MultipleActiveResultSets=True;
                             Initial Catalog=MyDB;
                             App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />  

我已经安装了我在 Visual Studio 2013 中使用的 .net Framework 4.5 和 SQL Server 2012 sp1 v11.0.300

当我安装我的程序时,一切正常,但是当我运行我的程序时,它在第一次启动时停止工作。我认为连接字符串有问题。 如果我在 Visual Studio 中单击调试,我会看到此错误

EntityFramework.dll 中出现“System.InvalidOperationException”类型的未处理异常。附加信息:在应用程序配置文件中找不到名为“MyDBEntities”的连接字符串。

【问题讨论】:

你有什么错误吗.. 不只是停止工作 如果我在视觉中单击调试会显示此错误。=>EntityFramework.dll 中发生“System.InvalidOperationException”类型的未处理异常。附加信息:在中找不到名为“MyDBEntities”的连接字符串应用程序配置文件。 【参考方案1】:

原因是您没有将数据库文件附加到本地数据库引擎。尝试使用可用的适当 SQL Server 方法。您的应用程序(安装后)在本地数据库引擎中找不到数据库。

【讨论】:

实际上您正在使用安装过程,因此您似乎希望您的应用程序具有可移植性,因此您不应该使用绝对路径。关于提到的属性,我想你应该看看connectionstrings.com/sql-server-2012 您是否将数据库文件包含在安装程序文件夹中? 逻辑上不工作,去你的 sql server 分离数据库,将文件复制到具有足够权限的单独文件夹中,然后将 db 数据和日志文件包含在安装文件夹中。 他们有没有在安装中附加数据库? 看看这些:***.com/questions/20772846/… 和 codeproject.com/Articles/16231/…【参考方案2】:

最后我无法使用Advanced Installer 创建安装文件。 但我是由Install Shield 创建的。 我的问题是从数据库中插入、删除或编辑。 我将我的程序安装在其他驱动器中,我的问题解决了。 原因是一个笑话,C 中的程序文​​件是readonly

【讨论】:

以上是关于连接字符串 C# Entity Framework SQL Server Express的主要内容,如果未能解决你的问题,请参考以下文章

C# Entity Framework Json 反序列化字符串数组问题

在 C# 中使用 Entity Framework Core 插入数据之前检查重复字符串数据的最佳实践

Entity Framework 怎么使用自定义连接字符串

Entity Framework 6 设置连接字符串运行时

Entity Framework 4.0/如何从日期和时间连接字符串

如何在 Entity Framework Core 中将连接字符串传递给 DBContext?