ฉันกำลังสร้างแอปพลิเคชัน UWP ใหม่โดยใช้ Mvvm Light และ Entity Framework Core ฉันยังใหม่กับ 2 เทคโนโลยีนี้
ฉันสร้างโมเดลของฉัน: คลาส Article เป็น ObservableObject ธรรมดาที่มีคุณสมบัติ 3 อย่าง: Id, Réfé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) ที่จัดการกับสิ่งเดียวเท่านั้น ซึ่งหมายความว่าคุณสามารถจัดระบบของคุณให้มีรายละเอียดที่ดีเยี่ยมได้ IMHO รูปแบบที่น่าทึ่ง - person Callum Linington   schedule 27.06.2016viewModel
ในคำถามของคุณ แล้วฉันจะสร้างคำตอบให้คุณโดยใช้ CQRS - person Callum Linington   schedule 27.06.2016