0

我正在循环通过中继器并使用 c# SqlCommand 向我的数据库发送更新查询

稍后当我想要我使用的新更新类型的实体类型时

Document d = (from c in db.Documents where c.Id = myID select c).First();

我得到一个文档,其中使用 SqlCommand 更新的字段仍然为空,但是当我检查数据库时,这些字段具有正确的值。

有没有办法从 SqlCommand 命令获取实体类型,或者确保 Linq-To-Sql 获取更新的数据。

在执行此操作之前,我尝试过运行 db.savechanges() ,但没有区别。

编辑:

SqlCommand command = getCommand(type, field, item, nDocID, required); // commandText = "UPDATE Documents SET " + field + "=@" + field + " WHERE DocumentID = " + id; "



                    if (command != null)
                    {
                        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connString"].ConnectionString);

                        command.Connection = conn;
                        conn.Open();
                        command.ExecuteNonQuery();
                        conn.Close();
                    }
4

1 回答 1

3

db.SaveChanges() 不会做任何事情,因为您没有通过 EF 进行任何更改来应用。您所做的更改超出了它的范围。我猜你在全局声明了你的 db 变量并且 EF 缓存了数据。相反,请尝试这样做:

using(somethingEntities db = new somethingEntities()){
  Document d = (from c in db.Documents where c.Id = myID select c).First();
  // do something here
}
于 2013-02-07T14:55:24.700 回答