Я создаю новое приложение UWP, используя Mvvm Light и Entity Framework Core. Я новичок в этих двух технологиях.
Я создаю свою модель: класс Article представляет собой простой ObservableObject с тремя свойствами: Id, Reférence и Désignation.
Мой DbContext следующий:
public class UniversalTest1Context : DbContext
{
public DbSet<Article> Articles { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=UniversalTest1.db");
}
}
Я ищу лучший способ управления DbContext и моими различными представлениями.
Лучше ли создать один DbContext для всего приложения? Мне не очень нравится эта идея.
Должен ли я создавать DbContext в каждой ViewModel? Мне так больше нравится.
Когда пользователь дважды нажимает элемент в представлении списка статей, я перехожу к представлению сведений о статье и передаю статью в модель представления, связанную с представлением сведений о статье. Но эта уже существующая статья не связана с DbContext модели подробного представления статьи.
Можно ли создавать экземпляр DbContext только при необходимости? Мой предпочтительный вариант.
Для этого я передаю статью из модели представления списка в модель представления сведений. И затем, когда пользователь нажимает «Сохранить», я выполняю что-то вроде этого:
using (var db = new UniversalTest1Context())
{
db.Articles.Add(article);
await db.SaveChangesAsync();
}
Конечно, это работает для новых статей (вставка), но не для существующих (обновление).
У меня есть трудности с принятием решения здесь.
Заранее большое спасибо, Жюльен.
class SaveArticleRequest : IRequest<Article>
Затем это отправляется в MediatR с использованиемmediator.SendAsync(new SaveArticleRequest(article));
Таким образом, вы создаете только очень нишевые (SRP) классы, которые имеют дело с одной вещью. Это означает, что вы можете составить свою систему с большой детализацией. ИМХО замечательная схема. - person Callum Linington   schedule 27.06.2016viewModel
в своем вопросе, и я создам вам ответ, используя CQRS. - person Callum Linington   schedule 27.06.2016