使用SQL调用更新时,表中的表不会更新?

时间:2010-12-13 19:31:41

标签: sql entity-framework asp.net-mvc-2

我遇到了一个问题,我遇到了EF和SQL。我有一个疯狂的存储过程,不能很好地转换为C#代码(EF / LINQ)。基本上,我所做的是使用SqlConnection和SqlCommand调用(System.Data.SqlClient)调用存储过程[见下文],然后使用EF从表中提取数据。这种情况一次又一次地发生,直到主表耗尽为止。 (我有一个包含数十万条记录的主表,存储的proc会将其中的一小部分拉出来并将其放入要处理的表中,一旦处理完毕,这些记录将从主表中删除,并且它会重新遍历,直到主表已经完全处理完毕)。

问题是该表永远不会在C#中更新,但它会在后端更新。

所以这是SQL调用:

 SqlConnection sqlConn;
   SqlCommand sqlCommand;

   using (sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["AppMRIConnection"].ConnectionString))
    {
        using (sqlCommand = new SqlCommand(String.Format("EXEC sp_PullFinalDataSetPart '{0}', '{1}'", sLocation, sOutputFileType), sqlConn))
        {
            sqlConn.Open();
            sqlCommand.ExecuteNonQuery();
            sqlConn.Close();
        }
    }

截断FinalDataSetPart表并使用X个新记录重新加载它。

这是C#中的调用

List<FinalDataSetPart> lstFinalPart = db.FinalDataSetPart.ToList();

此调用将始终加载第一个finaldatasetpart表,而不管表中的实际内容是什么。该调用在循环中是正确的(我可以进入代码并看到它在每次循环迭代时调用该方法)。

有没有人见过这样的事情?!

任何想法/帮助/提示都会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

当您提取新数据时,是否在临时表中更改了ID?如果主要ID没有改变,EF将不会检测数据的变化。

您是否在每次获取新数据时都重新创建上下文?