【发布时间】:2017-08-31 21:52:26
【问题描述】:
我的解决方案中有两个项目:
- 一个带有 EF 的 ASP.NET Web API 项目
- 带有 EF 的控制台应用程序
两个项目都配置为连接到 SQL Server,并且在app/web.config 中定义了相同的连接字符串:
<add name="AppContext"
providerName="System.Data.SqlClient"
connectionString="Data Source=localhost\SQLEXPRESS;Database=XYZAC;Integrated Security=True" />
该问题仅出现在控制台应用程序中。 Web 应用程序正确创建 XYZAC 数据库。然而,控制台应用程序创建了一个名称为Namespace.AppContext 的数据库,这根本不是我需要的。因此,这些项目之间没有通信。
我尝试在控制台应用程序的连接字符串中将Database= 更改为Initial Catalog=,但它没有改变任何东西。
这可能是什么原因?是否会因为 API 是通过 IIS APPPOOL\XYZAC 用户和应用程序通过 WINSRV\Administrator 登录而发生的?似乎不太可能,因为两者都具有几乎相同的权限组和对所有内容的访问权限,但我不确定还有什么原因。
我在这里做错了什么?
编辑:我在这两个项目之间共享数据库模型。我将尝试将连接字符串硬编码到构造函数中。
【问题讨论】:
-
检查您的
DbContext构造函数。我猜你没有告诉它使用 .config 的连接字符串。 -
控制台应用也不使用 web.config。它使用 your.app.name.exe.cofig 文件。
-
您需要为您的控制台应用程序添加
app.config。 -
简单的答案是不要使用 EF... 使用 Dapper!
-
我在这两个项目之间共享相同的数据库模型,connectionStrings 具有相同的名称,所以它应该在两个项目中都可以工作......对吗?我想我没有在帖子中解释那部分。
标签: c# asp.net .net sql-server entity-framework