2014-05-08 122 views
0

我面臨的一個問題,而使用下面的查詢基礎連接被關閉的連接被意外

控制器

TestPlanService.TestPlanServiceClient svclient = new TestPlanService.TestPlanServiceClient(); 

      try 
      { 
       return svclient.GetTestPlans().ToList(); 
      } 
      catch (Exception ex) 
      { 
       string exmess = ex.InnerException.Message; 
      } 

查詢

using (DataModelContainer db = new DataModelContainer()) 
       { 
        db.Configuration.LazyLoadingEnabled = false; 
        db.Configuration.ProxyCreationEnabled = false; 

        var query = (from c in db.TestPlans.Include(x => x.TestPoints) 
           select c); 
        var result = query.ToList(); 
        return result; 
}) 

在使用實體框架關閉在上面的代碼中,雖然我能夠從所有的數據庫中返回列表È子元素加載

的模型是如下

public partial class TestPlan 
    { 
     public TestPlan() 
     { 
      this.TestPoints = new HashSet<TestPoint>(); 
     } 

     public int TestPlanId { get; set; } 
     public string TestPlanName { get; set; } 
     public int TestPlanTypeId { get; set; } 
     public int RiskTierID { get; set; } 

     public virtual ICollection<TestPoint> TestPoints { get; set; } 
     public virtual TestPlanType TestPlanType { get; set; } 
     public virtual RiskTierMaster RiskTierMaster { get; set; } 
    } 

public partial class TestPoint 
    { 
     public TestPoint() 
     { 
      this.TestPlans = new HashSet<TestPlan>(); 
     } 

     public int TestPointId { get; set; } 
     public string TestPointName { get; set; } 
     public int TestMethodId { get; set; } 
     public Nullable<int> PassThreshold { get; set; } 
     public Nullable<int> FailThreshold { get; set; } 
     public int OrganizationID { get; set; } 
     public string CreatedBy { get; set; } 

     public virtual TestMethod TestMethod { get; set; } 
     public virtual ICollection<TestPlan> TestPlans { get; set; } 
     public virtual OrganizationMaster OrganizationMaster { get; set; } 
    } 

測試計劃可以有多個測試點。 我能夠從服務返回的結果,但不幸的是在控制器方面,它拋出的錯誤作爲 「的基礎連接已關閉:連接被意外關閉」

讓我知道,如果有人有這方面的任何解決方案。

+0

您在服務器上使用WCF?你能向我們展示wcf方法的方法簽名嗎? –

+1

通常當我看到這是因爲序列化錯誤。檢查你的Windows應用程序日誌(在服務器上)。您可能在那裏獲得更多信息。通常我會發現我的DataContract存在一個問題。假設你正在使用WCF Soap。 – Aron

+0

您好沃特, 這是接口 [的ServiceContract()] 公共接口ITestPlanService { [OperationContract的] 列表 GetTestPlans(); } –

回答

0

@Aron,

你說得對,我想這是因爲序列化錯誤。 對於正在尋找這個問題的其他人來說,這是幫助我的。

在我的實體模型.edmx文件生成.tt文件只需添加兩行代碼如下。這應該是做了該模型

我已經把它應用到下面我班的一個範圍內的所有實體,

using System.Runtime.Serialization;  
[DataContract(IsReference = true)] 
public partial class TestPlanType 
{ 
    public TestPlanType() 
    { 
     this.TestPlans = new HashSet<TestPlan>(); 
    } 

    public int TestPlanTypeId { get; set; } 
    public string TestPlanTypeName { get; set; } 

    public virtual ICollection<TestPlan> TestPlans { get; set; } 
} 

this article helped me

相關問題