使用 DataContext 进行许多操作

发布于 2024-12-01 01:29:29 字数 1145 浏览 1 评论 0原文

我使用 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;
   }
}

I'm using EF for developing and enough new here.
I'm confused with how to work with EntityFramework context when I have to do different operations with context. Could you give me good tutorials and glance at my code for finding possible issues

Now I have next code

//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;
   }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流殇 2024-12-08 01:29:29

您需要在多个存储库之间共享相同的 EntityFrameworkDataContext 实例(使用工作单元模式http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4- 0.aspx )。因为如果您正在进行一项需要启动两个或更多存储库的操作,则会遇到问题。

You need to share same EntityFrameworkDataContext instance between between several repositories (Use unit of work pattern http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx ).Because if you are doing an operaiton which you need to initiate two or more repositories you will have problems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文