2016-08-05 2 views
0

У меня возникли проблемы с соблюдением принципа DRY при реализации функции EntityFramework DBContext.применить DRY с entityContext

В деталях, у меня есть функция 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; 
     } 
    } 

Чтобы следовать СУХОЙ принцип I хотел бы вместо этого называть мою функцию SelectClientFromID и использовать мой SaveContext.MyClient.Remove(savedClient) с savedClient, являющимся возвратом от моей функции SelectClientID.
К сожалению, так как мой клиент придет из другого DBContext, он не работает.
Как я должен правильно выполнять мои функции?

ответ

1

Вы должны не торопиться и прочитать о шаблоне репозитория/схеме работы. Он решает вашу проблему, имея общий экземпляр DbContext во всех репозиториях ваших объектов.

+0

Хм, я только что закончил читать http://www.codeproject.com/Articles/581487/Unit-of-Work-Design-Pattern, но мне кажется, что моя Unit of Work уже является моим DBC-текстом. Казалось бы, создать глобальный DBC-текст опасно, есть ли у вас документация с более подробным объяснением? – Belterius

+0

@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-as-asp-net-mvc-application здесь хорошая статья – Alex

Смежные вопросы