实体框架新手 - 保存到数据库

时间:2012-03-02 14:41:33

标签: entity-framework-4

我有3个连接表; ValidationRun 有许多结果,其中包含许多错误

以下代码成功保存到Result和Error表,但不保存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 :(得分:1)

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