C# 实体框架6-可以从PackageManager进行连接,但不能从WebAPI项目进行连接
我的解决方案由两个项目组成。一个是Web API/angular2应用程序,另一个是与实体框架接口的数据访问层。我的web应用程序项目引用此数据层项目以创建/检索数据 尝试在数据库上下文中添加新数据或从数据库集检索数据时,我遇到以下错误: System.Data.SqlClient.SqlException:'建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:26-定位指定的服务器/实例时出错)' 以下是我的数据层项目中的应用程序配置:C# 实体框架6-可以从PackageManager进行连接,但不能从WebAPI项目进行连接,c#,asp.net,entity-framework,asp.net-web-api,web,C#,Asp.net,Entity Framework,Asp.net Web Api,Web,我的解决方案由两个项目组成。一个是Web API/angular2应用程序,另一个是与实体框架接口的数据访问层。我的web应用程序项目引用此数据层项目以创建/检索数据 尝试在数据库上下文中添加新数据或从数据库集检索数据时,我遇到以下错误: System.Data.SqlClient.SqlException:'建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb"/>
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
<connectionStrings>
<add name="SettingBuilder" connectionString="Data Source=(LocalDb)\ProjectsV13;Initial Catalog=SettingBuilder;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup></configuration>
任何帮助都将不胜感激
编辑:我制作了一个简单的控制台应用程序来测试这一点。从控制台应用程序,它可以工作-我刚刚从我的数据层项目复制了app.config。但是,DB是在另一个地方创建的,具有完全限定的名称,而不是我在app.config中指定的名称(它将SettingBuilder.Data.SettingBuilderContext创建为DB)
这导致我假设框架没有引用我的应用程序配置文件。有没有办法进行配置
编辑2:如果我手动硬编码我的连接字符串,这同样有效。我刚刚将它从webconfig复制到db上下文初始化中 一,。您不需要数据层项目中的app config,因为它不是可执行文件。它使用WebApi项目的配置文件-web.config。2.为什么要注释掉“base”(“SettingBuilder”)?EF如何知道以其他方式使用哪个连接字符串?3.您的EF连接字符串看起来不正确。该配置存在于数据层中,可供package manager控制台在我想要添加迁移等时使用。我尝试过注释掉/未注释掉该行,但似乎没有什么不同。我刚刚用开发控制台应用程序的发现更新了帖子。您如何实例化SettingBuilderContext?这是ASP.Net核心WebApi项目吗?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb"/>
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
<connectionStrings>
<add name="SettingBuilder" connectionString="Data Source=(LocalDb)\ProjectsV13;Initial Catalog=SettingBuilder;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace SettingBuilder.Data
{
public class SettingBuilderContext : DbContext
{
public DbSet<Setting> Settings { get; set; }
public SettingBuilderContext() //: base("SettingBuilder")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Setting>().ToTable("Setting");
}
}
}
[HttpPost("[action]")]
public void CreateSetting([FromBody]Setting setting)
{
_unitOfWork.SettingRepository.CreateSetting(setting);
_unitOfWork.Save();
}