Entity Framework Core: DbContextOptionsBuilder, 'useqlserver' için bir tanım içermiyor ve 'useqlserver' uzantısı yöntemi yok


150

EF çekirdeğinde yeniyim ve ASP.NET Çekirdek projemle çalışmasını sağlamaya çalışıyorum.

startup.csYapılandırmadan DbContextbir bağlantı dizesi kullanmak için yapılandırmaya çalışırken yukarıdaki hatayı alıyorum . Bu öğreticiyi takip ediyorum: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

Sorunlu kod 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));
        }

UseSqlServerBen bağlam içine doğrudan koyarsanız yöntem tanınır:

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");
        }

Tüm araştırmam çevrimiçi eksik referanslara işaret ediyor, ancak hangisini özlediğimi bulamıyorum ( resme bakın ).


Aynı şey, intellissense de yöntemi bulamaz.
Maxime Laflamme

Yanıtlar:



352

Önce Microsoft.EntityFrameworkCore.SqlServer NuGet Paketini yüklüyoruz:

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer

Ardından, ad alanını

using Microsoft.EntityFrameworkCore;

veritabanı içeriğini ekliyoruz:

services.AddDbContext<AspDbContext>(options =>
    options.UseSqlServer(config.GetConnectionString("optimumDB")));

3
Cevabınız için teşekkürler ama bunu zaten yaptım. Orijinal projemde bir şeyin bozuk olduğundan şüphelenmeye başlıyorum. Yeni bir projeden yeniden
üretilip

10
Bu yanıt diğer yanıtlar değil doğru yanıt olarak işaretlenmelidir, bunun nedeni UseSqlServer yönteminin diğer paketlerden değil, bu paketten olmasıdır.
H35am

107

ekleme using Microsoft.EntityFrameworkCore;

sorunu benim için elle çözdü

Burada buldum

Düzenle...

dotnet core 3.1 add için

Microsoft.EntityFrameworkCore.SqlServer


5
İşte cevap.
smulholland2

Benim için düzelttim! Her nasılsa ctrl + öneri listesinde değildi.
Ron Splinter

2019'da .Net Core 2.2
lucamuh

1
Evet, ancak dotnetcore 3.1 için Microsoft.EntityFrameworkCore.SqlServer paketinin gerekli olduğunu gördüm. Bundan önce, Microsoft.EntityFrameworkCore tek başına yeterliydi.
Jeremy Ray Brown

31

NuGet Paketinin altına yükleyin sorununuzu çözecektir

Microsoft.EntityFrameworkCore.SqlServer

Yükleme Paketi Microsoft.EntityFrameworkCore.SqlServer


1
Bu tek satır komutunun op sorununu nasıl çözeceği hakkında biraz daha açıklama ekleyin. Özellikle, burada bir pakete hitap ediyorsunuz, bu yüzden bu paketin nasıl çalıştığını açıklamanız gerekiyor.
Parth Pandya

"DbContextOptionsBuilder.UseSqlServer" Microsoft.EntityFrameworkCore.SqlServer paketinde mevcuttur , bu yüzden derleme sorununu çözmek için referans eklemeniz gerekir.
Phani K

9

Paket eksik. Paket Yöneticisi Konsolu'nu açın ve aşağıdaki kodu yürütün:

Install-Package Microsoft.EntityFrameworkCore.SqlServer 

9

Aşağıdaki adımları takip et.

Entity Framework Core Tasarımı için Entity Framework Core Tasarımı ve SQL Server veritabanı sağlayıcısını kurun:

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

İthalat Varlık Çerçevesi Çekirdeği:

using Microsoft.EntityFrameworkCore;

Ve DbContext'inizi yapılandırın:

var connectionString = Configuration.GetConnectionString("myDb");
services.AddDbContext<MyDbContext>(options => 
    options.UseSqlServer(connectionString)
);

7

Visual Studio Code kullanıyordum.

1) Sürüm numarasını belirterek 'Microsoft.EntityFrameworkCore.SqlServer' paketini yüklemeye çalışın.

VS Kodu :

'dotnet Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1 paketini ekle'

Görsel stüdyo:-

'Install-Package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'

' Paket' bağlantısına bakın. Microsoft.EntityFrameworkCore.SqlServer ' bunu yapmak için' projedeki tüm 'çerçevelerle' uyumlu değil.

2) Ardından,'.E.EityityFrameworkCore kullanarak 'ad alanını ekleyin ; 'seçeneğini manuel olarak Startup.cs dosyasına ekleyin.

Aşağıdaki bağlantıya bakın https://github.com/aspnet/EntityFramework/issues/7891 .

3) 'için herhangi bir bağımlılık sorunu alırsanız Microsoft.EntityFrameworkCore.SqlServer.Design' gibi "Paket ' Microsoft.EntityFrameworkCore.Design' projesinde 'hepsi' çerçeveler ile uyumsuz ", biz komuta altında çalıştırmak için gereken,

VS Kodu: -

dotnet Microsoft.EntityFrameworkCore.Design -v 1.1 paketi ekle

Görsel stüdyo

Yükleme Paketi Microsoft.EntityFrameworkCore.Design -v 1.1


1
Bu aslında işe yarıyor. Bu sorunun en iyi cevabı. Teşekkürler @Krishna
penderi

6

Proje -> MangeNugetPackages -> Gözat -> "Microsoft.EntityFrameworkCore.SqlServer" araması yapın ve yükleyin veya güncelleyin.


4

Win'in en yüksek puanlama cevabından bahsedildiği gibi Microsoft.EntityFrameworkCore.SqlServer NuGet Paketini kurmanız gerekebilir, ancak bu sorunun asp.net core mvc kullandığını lütfen unutmayın. En son ASP.NET Core 2.1'de MS, Microsoft.AspNetCore.App adlı bir meta paket olarak adlandırılanları ekledi

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2

Çözüm gezgininde ASP.NET Core MVC projesine sağ tıklayıp şunu seçerseniz referansı görebilirsiniz. Edit Project File

ASP.NET çekirdeği using ifadesini tıklatıyorsa bu meta paketi görmelisiniz.

<PackageReference Include="Microsoft.AspNetCore.App" />

Microsoft.EntityFrameworkCore.SqlServer bu meta paketine dahil edilmiştir. Bu nedenle Startup.cs dosyasında yalnızca şunları eklemeniz gerekebilir:

using Microsoft.EntityFrameworkCore;


3

Bunun Microsoft.EntityFrameworkCore.SqlServer.Design'a bir proje başvurusu ekleyerek çözülebileceğine inanıyorum

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.SqlServer doğrudan projeme yüklenmedi, ancak .Design paketi yine de önkoşul olarak yükleyecek.


Geçişli bağımlılık olarak gerekli projeyi getiren gereksiz paketlerin kurulması, sorunun çözümü değildir.
Smit

Paketin gereksiz olduğunu varsayıyorsunuz, ancak aynı sorunu yaşadığımda projemi düzeltti.
Andrew S

Bu paket mevcut soru için gereksizdir. Farklı bir konu için gerekli olabilir, ancak bu değil.
Smit

Bugün 27 Temmuz itibariyle, sadece Microsoft.EntityFrameworkCore.SqlServer paketini yükleyebilirsiniz ve sorunu çözecektir
danfer

3
Bugün, 5 / Şubat / 2018 tarihinden itibaren Microsoft.EntityFrameworkCore.SqlServer.Design paketini eklemeniz gerekiyor. Bu bir ASP.NET Core 2.0.1 web projesi kullanılarak gözlemlendi.
Rus

3

Benim için bu sorun Visual Studio Code ile oldu ve 2 adımda düzeltmeyi başardım:

  1. Manuel olarak ekleme using Microsoft.EntityFrameworkCore;
  2. Çalıştırma dotnet buildterminal.

3

Visual Studio'da, NuGet Package Manager => Çözüm için Paketleri Yönet seçeneğine bakın, çözümünüzde yüklü olsun ya da olmasın tüm bu paketleri kontrol edin :

  1. EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore
  3. Microsoft.EntityFrameworkCore.InMemory
  4. Microsoft.EntityFrameworkCore.Relational
  5. Microsoft.EntityFrameworkCore.Sqlite.Core
  6. Microsoft.EntityFrameworkCore.SqlServer
  7. Microsoft.EntityFrameworkCore.Tools

Yukarıdaki tüm paketleri yükledikten sonra aynı sorunları çözdüm.



3

ilk ekleme Install-Package Microsoft.EntityFrameworkCore.SqlServer

sonra .cs dosyanıza ekleyin using Microsoft.EntityFrameworkCore;

nihayet bunu çekirdeğinize ekleyin Startup.cs

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
        }

2

Sqlite durumunda bu sorunla karşı karşıyaysanız

. Bu Sqlite sürümü ile ilgili bir sorun olduğunu düşünüyorum, ben SqLite bu sürümlerini kullanırken aynı sorunu vardı

Sürüm 2.2.4 :

resim açıklamasını buraya girin

Burada sürümü kontrol ettikten sonra sürümü resim açıklamasını buraya girindeğiştirdim, sonra çalıştı.

resim açıklamasını buraya girin

Bunu kullandıktan sonra hata yok

Sürüm 2.1.2 :

resim açıklamasını buraya girin


1

Bunu basitçe hallettim:

Ekle SqlServerDbContextOptionsExtensionsSöz konusu sınıfa ÇözSqlServerDbContextOptionsExtensions

Bu sorunu giderir, varsayılan olarak bazı referanslar eksik olmalıdır.


1

Hala bu sorunu olan herkes için: Yüklemek için NuGet kullanın: Microsoft.EntityFrameworkCore.Proxies

Bu sorun, EFCore ile birlikte Castle Proxy kullanımı ile ilgilidir.


1

Wow pek çok cevap henüz bu Microsoft.EntityFrameworkCore.InMemory paketinden bahsetmedi !

Bu pakete referans ekleyin: <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />ve gitmek için iyi olmalısınız.


1

Microsoft.EntityFrameworkCore.SqlServer v3.0.0 ve Microsoft.EntityFrameworkCore.Tools v3.0.0'a taşındığımda bu sorunla karşılaştım

Her iki kütüphanede de v2.2.6'ya döndüğümde hata ortadan kalktı. Bu, bir çözümden çok bir çözümdür, ancak sorun çözülene kadar çalışmaya başlamanıza yardımcı olur.


1

Bu sorunu çözmenin kolay yolu

Hata mesajı:
resim açıklamasını buraya girin

Çözüm:
NuGet ile "microsoft.entityframeworkcore.sqlserver" kurulumu
resim açıklamasını buraya girin

Düzeltildi:
resim açıklamasını buraya girin

PS: "Microsoft.EntityFrameworkCore kullanarak" içeriğinde EF kullandığınızdan emin olun; resim açıklamasını buraya girin


0

Asp.net çekirdek sürüm 2.1 için sorunu çözmek için aşağıdaki paketi eklediğinizden emin olun. (En azından bu SQLite kullanarak sorunu giderir)

dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design

Varlık çerçevesi çekirdeği ile SQLite kullanan belgelerin referansı. https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite


0

Bu sorunu yaşadım, gerekli NuGet paketlerini eklememiştim, ancak bunu yaptığımı düşündüğüm halde, bunları tek tek kontrol ettiğinizden emin olun.


0

Şu anda Entity Framework Core 3.1.3 ile çalışıyor. Yukarıdaki çözümlerin hiçbiri sorunumu çözmedi.

Ancak, Microsoft.EntityFrameworkCore.Proxies paketinin projeme yüklenmesi sorunu çözdü. Şimdi DBContext seçeneklerimi ayarlarken UseLazyLoadingProxies () yöntemi çağrısına erişebilirim.

Umarım bu birine yardımcı olur. Aşağıdaki makaleye bakın:

EF Çekirdeğinde Tembel Yükleme


0

Kurulum paketi:

**Microsoft.EntityFrameworkCore.SqlServer**

ardından sınıfınızın en üstüne ekleyin:

**Microsoft.EntityFrameworkCore;**

bu benim için çalıştı


0

Hattı kullanmak zorunda kaldım

 services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));

Startup.cs içindeki ConfigureServices yönteminde


0

Aşağıdaki kodu https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi adresinden TodoApi.csproj'a kopyalamak benim için benzer sorunu çözdü.

<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 aşırı olabilir, ancak EntityFrameworkCore içerir


-1

Microsoft.EntityFrameworkCore.SqlServerBu sorunu çözmek için NuGet Paketini kurun .

Çekirdek Sürüm 3.1 kullanıyorum


2
Bu cevap zaten 2017-03-29 olarak verildi. Tekrar tekrarlamaya gerek yok
Thomas Weller
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.