将模型项目(EntityFramwork)添加到Asp.net Core 3项目

时间:2019-10-02 09:33:48

标签: asp.net entity-framework asp.net-core entity-framework-core blazor

我的解决方案中有3个项目,如下所示:

  1. ModelProject(EntityFramework)
  2. ProjectA(ASP.NET MVC)
  3. ProjectB(带有Blazor的ASP.NET CORE 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;
         }
     }
}

1 个答案:

答案 0 :(得分:0)

它必须是:

.AddDbContext<Models.DataContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DataContext")));

换句话说,没有用大括号括起来。您也可以只返回options实例,但这仅仅是不必要的代码膨胀。例外是红鲱鱼。因为您的lambda当前实际上是一个操作(没有返回值),而不是一个函子,所以它与AddDbContext的正确参数不匹配。