Отслеживание изменений EF Core и сервер BlazorC#

Место общения программистов C#
Anonymous
Отслеживание изменений EF Core и сервер Blazor

Сообщение Anonymous »

Я изо всех сил пытаюсь найти хороший шаблон для работы с EFCore и Blazor Server
По моим исследованиям, лучше всего использовать DI и DBContextFactory . Затем оберните каждую операцию в отдельный контекст БД.

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

// Program.cs

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContextFactory();
}

// OrderService.cs

private readonly IDbContextFactory _contextFactory;

public OrderService(IDbContextFactory contextFactory)
{
_contextFactory = contextFactory;
}

public async Task GetAllOrders()
{
using var ctx = _contextFactory.CreateDbContext();
return await _context.Orders.Include(o=>o.OrderLines).ToArrayAsync();
}

Но проблема в том, что контекст БД будет удален, и я потеряю любые возможности отслеживания изменений.
Например, если данные привязаны к редактируемой таблице данных.
Если многие заказы редактируются, я не могу просто выполнить «context.SaveChanges()», когда пользователь нажимает «Сохранить», и использовать только ядро ​​EF. обновите поля, которые изменились.

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

@inject OrderService _orderSerivce;

void DoTest()
{
var orders =_orderSerivce.GetAllOrders(); // Gets 500 orders

Random r = new Random();

// edit upto 20 orders.
for(int i = 0; i < 20; i++)
{
int rInt = r.Next(0, orders.Length-1);
orders[rInt].CustomerName = "NameChanged " + i;
}

_orderSerivce.UpdateOrders(orders); // ?? What should this do
}

Я не уверен, как должна работать функция UpdateOrders??
Должен ли я просто прикрепить заказы и позволить ей обновить все 500 заказов. Функция SaveChanges отслеживала бы, что было отредактировано и что нового, и обрабатывала бы все это за меня.
Но с удаленным контекстом, как мне теперь извлечь только изменения для обновления?

Подробнее здесь: https://stackoverflow.com/questions/791 ... zor-server

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