2012-03-02 85 views
0

我有3个连接表; ValidationRun有很多结果其中有许多错误实体框架新手 - 保存到DB

下面的代码成功地保存到结果和错误表,但不是ValidationRun。

你能看出问题吗?

private void WriteResultsToDB(SqlDataReader dr, XMLValidator validator)  
     {  
      using (var context = new ValidationResultsEntities())  
      {  
      var run = new ValidationRun { DateTime = DateTime.Now, XSDPath = this.txtXsd.Text };  

      //loop through table containing the processed XML  
      while (dr.Read())  
      {  
       var result = new Result  
       {  
        AddedDateTime = (DateTime)dr["Added"],  
        CustomerAcc = (string)dr["CustomerAcc"],  
        CustomerRef = (string)dr["CustomerRef"]  
       };  

       if (this.rdoRequest.Checked)  
       {  
        result.XMLMsg = (string)dr["RequestMSG"];  
       }  
       else  
       {  
        result.XMLMsg = (string)dr["ReplyMSG"];  
       }  

       if (validator.Validate(result.XMLMsg))  
       {  
        foreach (string error in validator.Errors)  
        {  
         result.Errors.Add(new Error { ErrorDescription = error });  
        }  
       }  
       else  
       {  
        //validator caught an error  
        result.Errors.Add(new Error { ErrorDescription = "XML could not be parsed" });  
       }  

       if (result.Errors.Count == 0) result.ValidFile = true; else result.ValidFile = false;  

       context.AddToResults(result);  
       context.SaveChanges();  
      }  
     } 

回答

1

您似乎没有将运行添加到上下文的任何部分。如果它被你添加的结果所引用,也许更改跟踪器会知道它应该被保存,但是因为它被写入,所以它只是一些孤立的对象,不会被连接到任何地方。

+0

是的,这就是谢谢。我通过添加“run.Results.Add(result);” – 2012-03-02 16:14:23