Конструктор перегрузки для частичного класса не вызывается, что приводит к нулевой ссылке на DbContext FactoryC#

Место общения программистов C#
Ответить
Anonymous
 Конструктор перегрузки для частичного класса не вызывается, что приводит к нулевой ссылке на DbContext Factory

Сообщение Anonymous »

У меня есть класс, созданный Entity Framework для одного из моих элементов контекста. (Сервер EF8/.net8 Blazor) Этот класс выглядит следующим образом:

Код: Выделить всё

//  This file has been auto generated by EF Core Power Tools. 
namespace ChargeModels
{
public partial class Individual
{
public Individual()
{
BatchLines = new HashSet();
}

public int id { get; set; }
public int name { get; set; }
public int? reference { get; set; }
}
}
Я хочу «расширить» этот класс, добавив в него несколько методов, которые я могу вызывать непосредственно из «отдельного» объекта. Для этого я создал этот класс:

Код: Выделить всё

namespace ChargeModels
{
public partial class Individual
{
private readonly IDbContextFactory _factory;

public Individual(IDbContextFactory factory)
{
_factory = factory;
}
public bool HasBills()
{
using (var context = _factory.CreateDbContext())
{
return context.ExistingBills.Where(x => x.IndividualId==id).Any();
}
}
}
}
В моем Program.cs я делаю это:

Код: Выделить всё

 builder.Services.AddDbContextFactory(options => options.UseSqlServer(config.GetConnectionString("ChargingConnection")));
С помощью этого шаблона я надеялся выполнить такую ​​операцию:

Код: Выделить всё

    public Individual BuildModel(int id)
{
var individual = _service.GetIndividual(id);
var hasBills = individual.HasBills();
}
Часть этого работает так, как я и ожидал. Я могу получить объект «Индивидуальный» из базы данных, и у него есть .HasBills(), доступный в качестве метода, который я могу вызвать. Я не могу понять, почему моя _factory всегда равна нулю. Конструктор перегрузки никогда не вызывается, что приводит к тому, что _factory никогда не перечисляется из передаваемой моей фабрики DI.
Я прекрасно использую одну и ту же фабрику во всех своих «обычных» сервисах, поэтому я должен быть неправильно использую этот фрагмент.
Может ли кто-нибудь дать мне совет, что я делаю неправильно?

Подробнее здесь: https://stackoverflow.com/questions/788 ... rence-on-d
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»