繁体   English   中英

将WCF服务中使用的Entity Framework连接字符串包含到自托管控制台应用程序中的正确方法是什么?

[英]What's the proper way to include Entity Framework connection string used in WCF service into a self hosting console application?

我正在做功课,这是一种WCF服务,该服务将SQL Server与Entity Framework一起使用,通过控制台应用程序托管,并使用WPF客户端。

有3个不同的项目,并且主机和服务在同一解决方案中。 我在服务的web.config文件中的控制台主机的app.config文件中包含了Entity Framework连接字符串。 这样,当我尝试进行查询时,服务器和主机将引发异常:

System.Data.Entity.Core.EntityException:“基础提供程序在打开时失败。”

内部异常说:

SqlException:尝试为文件C:\\ Users \\ username \\ source \\ repos \\ BlogAppWcf \\ BlogHost \\ bin \\ Debug \\ BlogDb.mdf附加自动命名的数据库失败。 存在具有相同名称的数据库,或者无法打开指定的文件,或者该数据库位于UNC共享上。

因此,它基本上在其自己的项目文件夹中搜索.mdf文件,而该文件位于服务的App_Data文件夹中。

原始的连接字符串如下所示,我将其从web.config复制到主机的app.config

connectionString="metadata=res://*/BlogDbEntities.csdl|res://*/BlogDbEntities.ssdl|res://*/BlogDbEntities.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=(LocalDB)\MSSQLLocalDB;
attachdbfilename=|DataDirectory|\BlogDb.mdf;
integrated security=True;
MultipleActiveResultSets=True;App=EntityFramework""

我尝试修改app.configAttachDbFilename属性,我给了它一个绝对路径,如下所示:

attachdbfilename=C:\Users\username\source\repos\BlogAppWcf\BlogAppWcf\App_Data\BlogDb.mdf;

这样,它就像一个魅力! 查询没有更多例外。

但这不是正确的方法,尤其是因为我必须将其发送给我的老师。 我想给它一个相对路径,就像这样:

attachdbfilename=..\..\..\BlogAppWcf\App_Data\BlogDb.mdf;

但这种方式行不通。

有没有人得到任何建议,也许我在做或在想完全错误的事情?

根据您的描述和遇到的问题,我认为问题归结为以下事实:附加数据库未正确附加到VS内置数据库服务器实例。 因此,我认为我们可以使用VS内置数据库实例字符串配置EntityFramework。

数据源=(localdb)\\ MSSQLLocalDB;初始目录= MyStore;集成安全性= True;连接超时= 30;加密= False; TrustServerCertificate = False; ApplicationIntent = ReadWrite; MultiSubnetFailover = False

然后重写DropCreateDatabaseAlways / DropCreateDatabaseIfModelChanges类的种子方法以提供种子数据。
请随时告诉我是否有什么我可以帮助的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM