为什么会出现此错误:
无法将lambda表达式转换为类型'ServiceLifetime',因为它不是委托类型[TokenAuthWebApiCore.Server]
在此代码行上:
public virtual void SetUpDataBase(IServiceCollection services)
{
// Add framework services.
services.AddDbContext<SecurityContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("SecurityConnection"), sqlOptions => sqlOptions.MigrationsAssembly("TokenAuthWebApiCore.Server")));
}
这是我的用法:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(Configuration);
services.AddMvc();
SetUpDataBase(services);
// services.AddDbContext<SecurityContext>(options =>
// options.UseSqlServer(Configuration.GetConnectionString("SecurityConnection"), sqlOptions => sqlOptions.MigrationsAssembly("TokenAuthWebApiCore.Server")));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public virtual void SetUpDataBase(IServiceCollection services)
{
// Add framework services.
services.AddDbContext<SecurityContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("SecurityConnection"), sqlOptions => sqlOptions.MigrationsAssembly("TokenAuthWebApiCore.Server")));
}
这都是我的using语句
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.IdentityModel.Tokens;
using System.Text;
我想这可能是因为该教程是针对.net core的其他版本的教程,而我正在使用.net core 2.2版。您能告诉我如何解决此问题吗?谢谢。
答案 0 :(得分:3)
SecurityContext
不是DbContext。如果您的项目中有一个名为SecurityContext
的DbContext,请从using System.Security;
类的使用中删除Startups.cs
或将DbContext重命名为SecurityDbContext
之类。
调用AddDbContext
时使用的通用类型来自System.Security
命名空间,但是它应该是您的数据库上下文。
答案 1 :(得分:1)
我遇到了同样的问题。我使用的接口由我的DbContext实现。这为我解决了问题:
Splunk
答案 2 :(得分:0)
我的项目中有同样的错误。问题是我的上下文类不是从DbContext派生的。
public class SecurityContext : DbContext
{
}
答案 3 :(得分:0)
app.get('/auth/google',
passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login'] }));
app.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});
答案 4 :(得分:0)
我在数据项目中意外安装EntityFramework而不是Microsoft.EntityFrameworkCore时收到了此消息。
答案 5 :(得分:0)
将项目迁移到EF核心时,我遇到了同样的问题。发生的事情是仍为EF定义了数据库上下文。为了解决此问题,我更改了DbContext以包括EF内核,并添加了DbContextOptions构造函数。
aspnetcore site处的全部展开。
答案 6 :(得分:0)
与版本兼容性错误无关。您需要在项目中实现DbContext。制作上下文类时,需要从DbContext类继承上下文类。
答案 7 :(得分:0)
我安装了EntityFramework和EntityFrameworkCore,删除了EntityFramework并对其进行了排序