Использование DBContextFactory в синглтонском классе в BlazorC#

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

Сообщение Anonymous »

Я все еще пытаюсь обернуть голову, как получить dbcontextfactory с обычной .cs class/singleton.

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

program.cs
:

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

var connectionString = builder.Configuration.GetConnectionString("Main");
builder.Services.AddDbContextFactory(options => options.UseSqlServer(connectionString));
builder.Services.AddSingleton();
< /code>
MyDBContext.cs
:

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

public class MyDBContext : DbContext
{
public DbSet Users { get; set; }
public DbSet Orders { get; set; }

public MyDBContext(DbContextOptions options) : base(options)
{
_options = options;
}
}
< /code>
UsersSingletonService
:

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

public class UsersSingletonService
{
internal List allUsers;

internal void SetDataUsers(List value)
=> allUsers = value;
}
< /code>
UsersScopedService
:

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

public class UsersScopedService
{
private UsersSingletonService _usersSingletonService;
//define the DBContextFactory here?
//private IDbContextFactory _dbFactory;

public UsersScopedService(UsersSingletonService usersSingletonService)
{
//somehow get the DBContextFactory here?
//
_usersSingletonService = usersSingletonService;
}

public async ValueTask GetUsersDataAsync()
{
if (_usersSingletonService.allUsers is null)
{
//how do we get DB context here?
var myDBContext = _dbFactory.CreateDbContext();
var allUsers = await myDBContext.Users.ToListAsync();
_usersSingletonService.SetDataUsers(allUsers);
}
return _usersSingletonService.allUsers;
}
}
< /code>
The idea is to use a singleton to store a "cached" list of Users
, который я могу получить с помощью сервисного класса. Я знаю, как ввести dbcontext в страницу .razor , но как бы я использовал его с пользовательским Speedservice здесь? Этот код основан на том, что кто -то предлагает использовать dbcontextfactory , но я понятия не имею, как его использовать.
Может ли кто -нибудь дать какие -либо предложения?

Подробнее здесь: https://stackoverflow.com/questions/796 ... -in-blazor
Ответить

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

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

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

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

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