Saya membuat aplikasi UWP baru menggunakan Mvvm Light dan Entity Framework Core. Saya baru mengenal 2 teknologi ini.
Saya membuat model saya : kelas Artikel adalah ObservableObject sederhana dengan 3 properti : Id, Référence dan Désignation.
DbContext saya adalah sebagai berikut:
public class UniversalTest1Context : DbContext
{
public DbSet<Article> Articles { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=UniversalTest1.db");
}
}
Saya mencari cara terbaik untuk mengelola DbContext dan pandangan saya yang berbeda.
Apakah lebih baik membuat satu DbContext untuk seluruh aplikasi? Saya tidak terlalu menyukai gagasan itu.
Apakah saya harus membuat DbContext di setiap ViewModel? Saya lebih menyukai ini.
Saat pengguna mengetuk dua kali item dalam tampilan daftar artikel, saya menavigasi ke tampilan detail artikel dan meneruskan artikel ke model tampilan yang terkait dengan tampilan detail artikel. Namun artikel yang sudah ada ini tidak terkait dengan DbContext model tampilan detail Artikel.
Apakah mungkin untuk membuat instance DbContext hanya bila diperlukan? Opsi pilihan saya.
Untuk ini, saya meneruskan artikel dari model tampilan daftar ke model tampilan detail. Dan kemudian, ketika pengguna mengklik simpan, saya menjalankan sesuatu seperti ini:
using (var db = new UniversalTest1Context())
{
db.Articles.Add(article);
await db.SaveChangesAsync();
}
Tentu saja, ini berfungsi untuk artikel baru (sisipkan), tetapi tidak untuk artikel yang sudah ada (perbarui).
Saya kesulitan mengambil keputusan di sini.
Terima kasih banyak sebelumnya, Julien
class SaveArticleRequest : IRequest<Article>
Kemudian ini dikirim ke MediatR menggunakanmediator.SendAsync(new SaveArticleRequest(article));
Dengan cara ini Anda hanya membuat kelas khusus (SRP) yang menangani satu hal. Ini berarti Anda dapat menyusun sistem Anda dengan sangat detail. IMHO pola yang luar biasa. - person Callum Linington   schedule 27.06.2016viewModel
di pertanyaan Anda dan saya akan membuatkan Anda jawaban menggunakan CQRS. - person Callum Linington   schedule 27.06.2016