Перенос базового контекста Entity Framework на уровень данных - PullRequest
0 голосов
/ 28 апреля 2020

Я создал существующую базу данных в проекте уровня данных с помощью команды

Scaffold-DbContext Command

У меня также есть проект ASP. NET MVC.

В ConfigureServices метод моего Startup.cs, у меня есть

services.AddDbContext<GlassesMVDataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<GlassesMVDataContext>();

В моем appsetting.json.

есть строка подключения. У моего datacontext есть конструктор

public GlassesMVDataContext(DbContextOptions<GlassesMVDataContext> options)
        : base(options)
{
}

На уровне данных я хочу иметь возможность сделать что-то вроде этого:

using (var context = new GlassesMVDataContext())
{
}

Я хочу иметь возможность использовать строку подключения и иметь контекст, чтобы понять, что на уровне данных.

Как мне этого добиться?

1 Ответ

0 голосов
/ 28 апреля 2020

Вы уже сделали доступным DbContext для системы Dependency Injection (DI), когда вызвали "services.AddDbContext (options => ...)", так что строка подключения уже установлена, поэтому давайте go с этот подход.

В этом примере я предполагаю, что DbContext будет использоваться в службе, разрешенной из DI в конструкторе службы:

public interface IMyDataService
{
   void DoSomething();
}

public class MyDataService: IMyDataService
{
   private GlassesMVDataContext  _context;

   public MyDataService(GlassesMVDataContext context)
   {
      // The connection string is already set in Startup.cs
      _context = context;
   }

   public void DoSomething()
   {
      // Do something with _context here....
   }
}
...