EF与WCF:底层连接已关闭:连接意外关闭

Ana*_*mar 1 c# wcf exception-handling entity-framework-4.1 asp.net-mvc-3

当我通过WCF从ASP.NET MVC检索所有订单及其OrderDetails时,它会抛出错误.直到服务它工作正常,只有当调用在这种情况下停止服务MVC时,它才会抛出错误:

底层连接已关闭:连接意外关闭.

  1. 我没有使用延迟加载

  2. 我想使用相同的POCO类,不希望在WCF中单独创建DataContract.

我的代码:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ServiceReference1.Service1Client service = new ServiceReference1.Service1Client();
        var allOrders = service.GetAllOrders();
        service.Abort();
        return View();
    }       
}

// WCF Service Method
public List<Order> GetAllOrders()
{
    List<Order> orders = null;
    using (NorthwindEntities context = new NorthwindEntities())
    {
        orders = context.Set<Order>().Include("Order_Details").AsEnumerable().ToList();
    }

    return orders;
}

public class Order
{
    public Order()
    {
        this.Order_Details = new HashSet<Order_Detail>();
    }

    public virtual ICollection<Order_Detail> Order_Details { get; set; }
  } 

public class Order_Detail
{
    public int OrderID { get; set; }
    public int ProductID { get; set; }
    public decimal UnitPrice { get; set; }
    public short Quantity { get; set; }
    public float Discount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Ana*_*mar 6

感谢Alex,

它在禁用ProxyCreationEnabled后有效.

    public List<Order> GetAllOrders()
    {
        List<Order> orders = null;

        using (NorthwindEntities context = new NorthwindEntities())
        {
            context.Configuration.ProxyCreationEnabled = false;
            orders = context.Set<Order>().Include("Order_Details").AsEnumerable().ToList();
            context.Configuration.ProxyCreationEnabled = true;

        }

        return orders;
    }
Run Code Online (Sandbox Code Playgroud)