使用 entityContext 应用 DRY
apply DRY with entityContext
在实现 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
是我的 [=] 中的 return 15=]函数。
可悲的是,因为我的客户来自另一个 DBContext
,所以它不起作用。
我应该如何正确实现我的功能?
您应该花时间阅读有关工作模式的存储库 pattern/Unit。它通过在实体的所有存储库中使用通用 DbContext 实例来解决您的问题。
在实现 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
是我的 [=] 中的 return 15=]函数。
可悲的是,因为我的客户来自另一个 DBContext
,所以它不起作用。
我应该如何正确实现我的功能?
您应该花时间阅读有关工作模式的存储库 pattern/Unit。它通过在实体的所有存储库中使用通用 DbContext 实例来解决您的问题。