使用entityContext应用DRY

时间:2016-08-05 08:13:22

标签: c# entity-framework dry

在实现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,它不起作用 我该如何正确实现我的功能?

1 个答案:

答案 0 :(得分:1)

您应该花点时间阅读有关存储库模式/工作单元模式的信息。它通过在实体的所有存储库中使用通用DbContext实例来解决您的问题。