Много операций с DataContext - PullRequest
       51

Много операций с DataContext

0 голосов
/ 23 августа 2011

Я использую EF для разработки и достаточно нового здесь. Я путаюсь с тем, как работать с контекстом EntityFramework, когда мне приходится делать различные операции с контекстом. Не могли бы вы дать мне хорошие учебники и взглянуть на мой код для поиска возможных проблем

Теперь у меня есть следующий код

//domain.dll

class OrderDomainService 
{
   public void DoWork()
   {
     foreach(var order in GetOrders())
    {
       DeleteOrder(order);
    }

   }
   public List<Order> GetOrders()
   {
      IOrderRepository orderRep = new OrderRepository();
      return orderRep.GetAll();
   }

 public void DeleteOrder(Order order)
   {
      IOrderRepository orderRep = new OrderRepository();
      return orderRep.Delete(order);
   }
}

//repository.dll

public interface IOrderRepository
{
   List<Order> GetAll();

   void Delete(Order order);

   void SaveContext()
}

public class OrderRepository
{
 public OrderRepository()
{
   if (ctx == null) 
    ctx = new EntityFrameworkDataContext();
}

   static EntityFrameworkDataContext ctx { get; set; }

   public List<Order> GetAll()
   {
      return ctx.Orders;
   }

   public void Delete(Order order)
   {
      ctx.Orders.Delete(order);
   }

   public void SaveContext()
   {
     ctx.SaveChanges();
     ctx = null;
   }
}

1 Ответ

1 голос
/ 24 августа 2011

Вам необходимо совместно использовать один и тот же экземпляр EntityFrameworkDataContext между несколькими репозиториями (Использовать шаблон единицы работы http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx). Поскольку при выполнении операции, для которой вам нужно запустить два или более репозиториев, у вас будут проблемы ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...