EF Core Перевод базы данных null при использовании внедрения зависимостей AddDbContext - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь добавить контекст к моей коллекции сервисов с помощью:

serviceCollection.AddDbContext<MyContext>(options => options.UseSqlServer("My connection string"));

, чуть позже я выполняю запрос, получая экземпляр контекста:

var context = serviceProvider.GetService<MyContext>();
var user = context.Users.FirstOrDefault(u => u.UserName == userName);

, который выдает ошибку:

System.NullReferenceException: 'Ссылка на объект не установлена ​​для экземпляра объекта.'

Странно, но ни пользователь DbSet не имеет значения , Когда я отлаживаю предоставленный контекст, я вижу, что оба свойства ChangeTracker и Model в экземпляре контекста выдавали следующую ошибку:

'context.ChangeTracker' вызвал исключение типа 'System .InvalidOperationException '

Когда я заменяю AddDbContext на AddSingleton экземпляром, сделанным так:

var optionBuilder = new DbContextOptionsBuilder<MyContext>().UseSqlServer("My connetion string");
var context = new MyContext(optionBuilder.Options);

serviceCollection.AddSingleton(context);

все работает отлично.

I использую зависимость Microsoft в .ll-проекте. NET Framework 4.6.1, на который ссылается консольное приложение. NET Core 2.1, которое просто выполняет код в dll.

1 Ответ

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

Как предлагает @kriss, добавив

.AddEntityFrameworkSqlServer ()

в коллекцию сервисов до того, как .AddDbContext() добился цели.

Спасибо, Крисс!

...