«ConfigurationStoreOptions» не содержит определения для «UseSqlServer» - PullRequest
1 голос
/ 28 апреля 2020

Я получаю следующие сообщения об ошибках:

error CS1929: 'ConfigurationStoreOptions' does not contain a definition for 'UseSqlServer' and the best extension method overload 'SqlServerDbContextOptionsExtensions.UseSqlServer(DbContextOptionsBuilder, string, Action<SqlServerDbContextOptionsBuilder>)' requires a receiver of type 'DbContextOptionsBuilder'
error CS1929: 'OperationalStoreOptions' does not contain a definition for 'UseSqlServer' and the best extension method overload 'SqlServerDbContextOptionsExtensions.UseSqlServer(DbContextOptionsBuilder, string, Action<SqlServerDbContextOptionsBuilder>)' requires a receiver of type 'DbContextOptionsBuilder'

Прежде всего, проблема не в том, что у меня нет Microsoft.EntityFrameworkCore.SqlServer, у меня есть.

Ошибка появляется в коде ниже в AddConfigurationStore и AddOperationalStore. Он в основном не распознает UseSqlServer. Как я уже сказал, проблема не в том, что у меня нет Microsoft.EntityFrameworkCore.SqlServer.

Код:

services.AddIdentityServer(options =>
{
    options.UserInteraction.LoginUrl = "/Login";
    options.UserInteraction.LogoutUrl = "/Logout";
})
    .AddSigningCredential(new X509Certificate2(Configuration["Certificates:Default:Path"], Configuration["Certificates:Default:Password"]))
    .AddConfigurationStore(options =>
        options.UseSqlServer(Configuration["ConnectionStrings:Dayum"],
            optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName)))
    .AddOperationalStore(options =>
        options.UseSqlServer(Configuration["ConnectionStrings:Dayum"],
            optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName)))
    .AddAspNetIdentity<ApplicationUser>();

Следующее работает нормально:

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(Configuration["ConnectionStrings:Dayum"],
        optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName)));

Мои пакеты NuGet:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="IdentityServer4" Version="3.1.3" />
    <PackageReference Include="IdentityServer4.AspNetIdentity" Version="3.1.3" />
    <PackageReference Include="IdentityServer4.EntityFramework" Version="3.1.3" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="3.1.3" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.3">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.3" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.2" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Certs\" />
  </ItemGroup>

</Project>

1 Ответ

0 голосов
/ 02 мая 2020

Я нашел ответ сам из проекта лесов . По-видимому, UseSqlServer теперь находится в ConfigureDbContext.

dotnet new is4ef
services.AddIdentityServer()
    .AddSigningCredential(new X509Certificate2(Configuration["Certificates:Default:Path"], Configuration["Certificates:Default:Password"]))
    .AddAspNetIdentity<ApplicationUser>()
    .AddConfigurationStore(options =>
    {
        options.ConfigureDbContext = builder => builder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
                optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName));
    })
    .AddOperationalStore(options =>
    {
        options.ConfigureDbContext = builder => builder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
                optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName));
    });
...