Entity Framework 코어 : DbContextOptionsBuilder '에'usesqlserver '에 대한 정의가 포함되어 있지 않고 확장 메서드'usesqlserver '가 없습니다.
저는 EF 코어를 처음 사용하고 내 asp.net 코어 프로젝트와 함께 작동하도록 노력하고 있습니다.
startup.cs
구성에서 연결 문자열을 사용하기 위해 dbcontext를 구성하려고 할 때 위의 오류가 발생 합니다. 이 자습서를 따르고 있습니다 : https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro
startup.cs의 문제 코드 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;
namespace tracV2
{
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddSingleton<IConfiguration>(Configuration);
string conn = Configuration.GetConnectionString("optimumDB");
services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
}
이 usesqlserver
방법은 컨텍스트에 직접 넣으면 인식됩니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace tracV2.data
{
public class tracContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("myrealconnectionstring");
}
내 모든 리서치 온라인에서 누락 된 참조를 가리 키지 만 내가 누락 된 참조를 찾을 수없는 것 같습니다 (이미지 참조). 참조
어떤 도움이라도 대단히 감사하겠습니다.
감사
이것은 프로젝트 시스템의 알려진 문제입니다. 참조 # 1741 DOTNET / 프로젝트 시스템을
Microsoft.EntityFrameworkCore.SqlServer NuGet 패키지를 설치합니다.
Microsoft.EntityFrameworkCore.SqlServer
PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer
그때,
services.AddDbContext<AspDbContext>(options =>
options.UseSqlServer(config.GetConnectionString("optimumDB")));
업데이트 는 using Microsoft.EntityFrameworkCore;
네임 스페이스 를 추가하는 것을 잊지 마십시오
첨가 using Microsoft.EntityFrameworkCore;
수동으로 문제를 해결했습니다.
NuGet 패키지 아래에 설치하면 문제가 해결됩니다.
Microsoft.EntityFrameworkCore.SqlServer
설치 패키지 Microsoft.EntityFrameworkCore.SqlServer
Visual Studio Code를 사용하고있었습니다.
1) 버전 번호를 지정하여 'Microsoft.EntityFrameworkCore.SqlServer'패키지를 설치하십시오.
VS 코드 :
'dotnet 추가 패키지 Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'
비주얼 스튜디오:-
'설치 패키지 Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'
이를 수행하려면 ' 패키지'Microsoft.EntityFrameworkCore.SqlServer '가 프로젝트 의 '모든 '프레임 워크와 호환되지 않습니다 . 링크를 참조하십시오 .
2) Microsoft.EntityFrameworkCore를 사용하여 '네임 스페이스를 추가합니다 . 'Startup.cs 파일에서 수동으로.
아래 링크 https://github.com/aspnet/EntityFramework/issues/7891을 참조하십시오 .
3) ' Microsoft.EntityFrameworkCore.SqlServer.Design'에 대한 종속성 문제가 발생하는 경우 "패키지 ' Microsoft.EntityFrameworkCore.Design'이 프로젝트의 '모든'프레임 워크와 호환되지 않습니다. '와 같이 아래 명령을 실행해야합니다.
VS 코드 :-
dotnet 추가 패키지 Microsoft.EntityFrameworkCore.Design -v 1.1
비주얼 스튜디오
설치 패키지 Microsoft.EntityFrameworkCore.Design -v 1.1
프로젝트-> ManageNugetPackages-> 찾아보기-> "Microsoft.EntityFrameworkCore.SqlServer"를 검색하고 설치 또는 업데이트합니다.
아래 단계를 따르십시오.
Entity Framework Core 용 Entity Framework Core Design 및 SQL Server 데이터베이스 공급자를 설치합니다.
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Entity Framework Core 가져 오기 :
using Microsoft.EntityFrameworkCore;
그리고 DbContext를 구성하십시오.
var connectionString = Configuration.GetConnectionString("myDb");
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(connectionString)
);
Microsoft.EntityFrameworkCore.SqlServer.Design에 프로젝트 참조를 추가하여이 문제를 해결할 수 있다고 생각합니다.
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.SqlServer는 내 프로젝트에 직접 설치되지 않았지만 .Design 패키지가 필수 구성 요소로 설치합니다.
먼저 추가 Install-Package Microsoft.EntityFrameworkCore.SqlServer
다음으로 .cs 파일에 추가하십시오. using Microsoft.EntityFrameworkCore;
마지막으로 이것을 코어에 추가하십시오. Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
}
나는 이것을 간단히 해결했다.
SqlServerDbContextOptionsExtensions
문제의 수업에 추가 해결SqlServerDbContextOptionsExtensions
이렇게하면 문제가 해결되며 기본적으로 일부 참조가 누락되어야합니다.
여전히이 문제가있는 사용자 : NuGet을 사용하여 설치 : Microsoft.EntityFrameworkCore.Proxies
이 문제는 EFCore에서 Castle Proxy를 사용하는 것과 관련이 있습니다.
Sqlite의 경우이 문제에 직면하면
. 나는 이것이 Sqlite 버전의 문제라고 생각합니다.이 버전의 SqLite를 사용할 때 동일한 문제가 발생 했습니다.
버전 2.2.4 :
여기 에서 버전을 확인한 후 버전을 변경하면 작동했습니다.
이것을 사용한 후 오류 없음
버전 2.1.2 :
Win의 최고 점수 답변에서 언급했듯이 Microsoft.EntityFrameworkCore.SqlServer NuGet 패키지를 설치해야 할 수도 있지만이 질문은 asp.net core mvc를 사용하고 있습니다. 최신 ASP.NET Core 2.1에서 MS는 Microsoft.AspNetCore.App이라는 메타 패키지를 포함했습니다.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2
You can see the reference to it if you right-click the ASP.NET Core MVC project in the solution explorer and select Edit Project File
You should see this metapackage if ASP.NET core webapps the using statement
<PackageReference Include="Microsoft.AspNetCore.App" />
Microsoft.EntityFrameworkCore.SqlServer is included in this metapackage. So in your Startup.cs you may only need to add:
using Microsoft.EntityFrameworkCore;
Copying the following code into the TodoApi.csproj from https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi solved similar issue for me.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
</ItemGroup>
</Project>
Microsoft.AspNetCore.All may be excessive but it includes EntityFrameworkCore
For asp.net core version 2.1 make sure to add the following package to fix the problem. (At least this fix the issue using SQLite)
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
다음은 엔티티 프레임 워크 코어와 함께 SQLite를 사용하는 문서의 참조입니다. https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite
나는 라인을 사용해야했다
services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
Startup.cs의 ConfigureServices 메서드에서
Wow 너무 많은 답변이 있지만 아무도이 Microsoft.EntityFrameworkCore.InMemory 패키지를 언급하지 않았습니다 !
이 패키지에 대한 참조를 추가하십시오 <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />
.
'Nice programing' 카테고리의 다른 글
PHP 내에서 .sql 파일로드 (0) | 2020.11.25 |
---|---|
Android에서 color 및 color.darker를 사용하십니까? (0) | 2020.11.25 |
작업 표시 줄에 뒤로 버튼 추가 (0) | 2020.11.25 |
최근 콘솔 명령을 모두 제거하는 방법 (0) | 2020.11.25 |
React-native run-ios를 macOS의 터미널 대신 iTerm에서 여는 방법은 무엇입니까? (0) | 2020.11.25 |