0

EF自体が作業単位であり、リポジトリであることを読んだので、本当に必要でない限り、リポジトリレイヤーと別のUoWを作成したくありません。

私はこれについて疑問に思っていました。City Service と Venue Service があります。

FindVenue メソッドがあります

public void FindVenue()
{
    // find venue in db
    // If not in db - find from 3rd party api
    // If from 3rd party api check if city exits in db
   //  If city does not exist create a city record in db
   //  If venue does not exist create a new venue record in db
   context.SaveChanges();
}

ここで、CreateCity メソッドを DbSet に追加する必要があるのか​​、それともcontext.SaveChanges();単に追加する必要があるのか​​ 疑問に思っています。FindVenue で新しい会場の作成が完了したら、両方のレコードを挿入することができます。

そうすれば、データベースへの呼び出しは1回だけで、1つが失敗すると両方がロールバックされます(もちろん、これらは別々であるという議論をすることができ、都市を挿入できるのであれば、なぜそれをしないのですか)

私が見る1つの問題は、誰かがコントローラーからCreateCityを呼び出した場合、都市をデータベースに直接挿入する方法があるため、コントローラーがcontext.SaveChanges()これを行う必要があることです。 CreateAndSaveCity() という新しいメソッドがあります。

4

2 に答える 2