Mvvm LightとEntity Frameworkコアを使用して新しいUWPアプリケーションを作成しています。私はこれらの2つの技術には新しいです。Mvvm LightとEntity Frameworkコアのベストプラクティス
私は私のモデルを作成:同上、参照と指定:条クラスには、3つのプロパティを持つ単純なObservableObjectです。私はDbContextと私の異なるビューを管理するための最良の方法を探しています
public class UniversalTest1Context : DbContext
{
public DbSet<Article> Articles { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=UniversalTest1.db");
}
}
:
私DbContextは次のとおりです。
アプリケーション全体に対して1つのDbContextを作成する方がよいでしょうか? 私はその考えが本当に好きではありません。
各ViewModelにDbContextを作成する必要がありますか? 私はこれが好きです。
ユーザーが記事リストビュー内のアイテムをダブルタップすると、記事詳細ビューに移動し、記事詳細ビューに関連付けられたビューモデルに記事を渡します。しかし、この既存の記事は、記事詳細ビューモデルのDbContextとは関係ありません。
必要なときにのみDbContextをインスタンス化できますか? 私の好みのオプション。
このために、記事をリストビューモデルから詳細ビューモデルに渡します。そして、ユーザーがクリックを保存するとき、私はこのような何かを実行します。もちろん
using (var db = new UniversalTest1Context())
{
db.Articles.Add(article);
await db.SaveChangesAsync();
}
が、これは既存のもの(更新)するために、新たな記事(挿入)のために動作しますが、ありません。
私はここで心を悩ませています。事前に
多くのおかげで、 ジュリアン
私はCQRSと[Mediatr](https://github.com/jbogard/MediatR) )。各インスタンスは作業単位であるため、使用するたびにインスタンスを作成する必要があります。 –
Callum、この場合、ビューに編集された記事を新しいDbContextに渡してデータベースに保存するにはどうしたらいいですか? –
MediatRを読み上げれば、 'SaveArticleRequest:IRequest'と呼ばれるものを作成します。これはMediator.SendAsync(new SaveArticleRequest(article));を使用してMediatRで送信されます。 (SRP)クラスで、1つのことを処理します。これは、あなたのシステムを非常に詳細に構成できることを意味します。 IMHO素晴らしいパターン。 –