0
EntityFramework DBContextに関連する関数を実装するとき、DRYの原則を遵守するために何らかの問題があります。詳細はentityContextでDRYを適用します。
、私はSelectClient機能を持っている:
public static Client SelectClientFromID(String ClientID)
{
using (DBContext SaveContext = new DBContext())
{
try
{
SaveContext.MyCompanies.Load();
SaveContext.MyProjects.Load();
SaveContext.MyClient.Load();
return SaveContext.MyClient.Where(x => x.ClientID.ToString() == ClientID).FirstOrDefault();
}
catch (Exception)
{
throw;
}
}
}
今私は、今ではそのように見えるため、DeleteClient機能を持っているしたいと思います:DRY原則に従うために
public static void DeleteClient(Client client)
{
try
{
using (DBContext SaveContext = new DBContext())
{
SaveContext.MyCompanies.Load();
SaveContext.MyProjects.Load();
SaveContext.MyClient.Load();
Client savedClient = SaveContext.MyClient.Where(x => x.ClientID == client.ClientID).FirstOrDefault();
SaveContext.MyClient.Remove(savedClient);
SaveContext.SaveChanges();
}
}
catch (Exception)
{
throw;
}
}
I代わりに私のSelectClientFromID
関数を呼び出して、私のSaveContext.MyClient.Remove(savedClient)
をsavedClient
とし、私のSelectClientID
関数の返り値とすることができます。
悲しいことに、私のクライアントは別のDBContext
から来るので、動作しません。
機能を正しく実装するにはどうすればよいですか?
Hum、私はちょうどhttp://www.codeproject.com/Articles/581487/Unit-of-Work-Design-Patternを読み終えましたが、私の作業ユニットはすでに私のDBContextです。グローバルなDBContextを作成することは危険なようですが、より詳細な説明を含むドキュメントがありますか? – Belterius
@Belterius http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work -patterns-in-an-asp-net-mvcアプリケーションはここに良い記事です – Alex