使用 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 实例来解决您的问题。