我的解决方案中有3个项目,如下所示:
因此,在模型项目中,我定义了表,关系,查询及其类,然后在ProjectA和ProjectB上添加了它们。
服务在startup.cs中的ProjectB(.net核心)上。AddDbContext尝试添加dbcontext(ModelProject),但出现此错误:
由于Lambda表达式不是委托类型,因此无法将其转换为“ ServiceLifetime”类型
在Core Project上使用EF是否出现此错误?我该怎么解决?
ProjectB(核心):
services .AddEntityFrameworkSqlServer() .AddDbContext<Models.DataContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("DataContext")); });
和dbcontext(EntityFramework标准):
namespace ModelProject
{
public class DataContext : DbContext
{
public DataContext() : base("DataContext")
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Migrations.Configuration>());
(this as IObjectContextAdapter).ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 300;
}
}
}
答案 0 :(得分:0)
它必须是:
.AddDbContext<Models.DataContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DataContext")));
换句话说,没有用大括号括起来。您也可以只返回options
实例,但这仅仅是不必要的代码膨胀。例外是红鲱鱼。因为您的lambda当前实际上是一个操作(没有返回值),而不是一个函子,所以它与AddDbContext
的正确参数不匹配。