在实现EntityFramework DBContext相关功能时,我在遵守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函数,现在它看起来像:
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;
}
}
要遵循DRY原则,我想改为调用我的SelectClientFromID
函数,并使用我的SaveContext.MyClient.Remove(savedClient)
savedClient
作为SelectClientID
函数的返回值。<登记/>
可悲的是,由于我的客户来自另一个DBContext
,它不起作用
我该如何正确实现我的功能?
答案 0 :(得分:1)
您应该花点时间阅读有关存储库模式/工作单元模式的信息。它通过在实体的所有存储库中使用通用DbContext实例来解决您的问题。