Использование одно и то же определение класса DBContextC#

Место общения программистов C#
Ответить
Anonymous
 Использование одно и то же определение класса DBContext

Сообщение Anonymous »

Я использую .net 8 и Oracle EF Core. В моем приложении мне нужно использовать как AddDBContext () для обычных операций за перспективы, так и для AddPooledDbContextFactory () для параллельных запросов LINQ (например, использование Task.whenall () ). После ошибки во время выполнения во время запуска: < /p>

не может употреблять Scoped Service 'dbcontextoptions' из singleton 'idbcontextpool' < /p>
< /blockquote>
Это происходит, даже если я снял, что я ожидал, что я ожидал, и все это правильно. иметь возможность зарегистрировать один и тот же класс dbContext как AddDBContext (Scoped), так и в AddPooledDbContextFactory (Singleton) в одном и том же приложении, поскольку они используются в разных службах для разных целей (следовать за логикой по сравнению с параллельной обработкой и той же носимым и тем же, что и той же документация, и то же, и то же, что иначе, и то же, что иначе, и то же, что иначе, и то же, и то же, и то же, и то же, и той же присвоение и той же оправдания, что и той же, что иначе, и то же, что и то же, и то же, что и то же, и то же, и той же наоборот, и то же, что и то же, что иначе в одном USEORACL (...) вызов. Я также гарантировал, что dbcontextoptions не вводится вручную в какие -либо услуги. В нем и инициируйте AddDBContext и AddPooledDbContextFactory с различным (но одинаковым контентом) DBContext . Что вы думаете, ребята?var builder = WebApplication.CreateBuilder(args);

var connectionString = builder.Configuration.GetConnectionString("Default");

// 🔴 Scoped DbContext
builder.Services.AddDbContext(options =>
options.UseOracle(connectionString));

// 🔴 Singleton factory registration
builder.Services.AddPooledDbContextFactory(options =>
options.UseOracle(connectionString));

builder.Services.AddScoped();

var app = builder.Build();
app.MapControllers();
app.Run();
< /code>
MyDbContext.cs:
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions options) : base(options) {}

public DbSet Dummy { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasKey(x => x.Id);
}
}

public class DummyEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
< /code>
MyService.cs:
public class MyService
{
private readonly IDbContextFactory _factory;

public MyService(IDbContextFactory factory)
{
_factory = factory;
}

public async Task GetCountAsync()
{
using var context = await _factory.CreateDbContextAsync();
return await context.Dummy.CountAsync();
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... and-an-idb
Ответить

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

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

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

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

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