Добавить модельный проект (EntityFramwork) в Asp.net Core 3 Project - PullRequest
0 голосов
/ 02 октября 2019

У меня есть 3 проекта в моем решении, как показано ниже:

  1. ModelProject (EntityFramework)
  2. ProjectA (ASP.NET MVC)
  3. ProjectB (ASP.NETCORE 3 с Blazor)

Итак, в модельном проекте я определил свои таблицы, отношения, запросы и их классы, а затем добавил это в ProjectA и ProjectB.

в ProjectB (ядро .net) в файле startup.cs от services.AddDbContext пытается добавить dbcontext (ModelProject), но получает эту ошибку:

Невозможно преобразовать лямбда-выражение в тип 'ServiceLifetimeпотому что это не тип делегата

Является ли эта ошибка при использовании EF в базовом проекте? как я могу решить это?

ProjectB (Core):

services .AddEntityFrameworkSqlServer() .AddDbContext<Models.DataContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("DataContext")); });

и dbcontext (EntityFramework Standard):

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 голосов
/ 02 октября 2019

Это должно быть:

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

Другими словами, без фигурных скобок. В качестве альтернативы вы можете просто вернуть экземпляр options, но это всего лишь ненужный код. Исключением является красная сельдь. Поскольку ваша лямбда в настоящее время по сути является действием (без возврата), а не функцией, она не соответствует правильному параметру для AddDbContext.

...