无法在C#Entity Framework

时间:2016-03-03 07:57:28

标签: c# sql-server

我维护一个在数据库中完成的操作列表(删除和更新)。 我使用foreach迭代列表并执行这些操作。下面是示例伪代码。我正在使用Entity Framework和SQL Server作为它背后的数据库。

foreach ( dbChange in dbChanges)
        {
            switch (dbChange.Operation)
            {
                case Add:
                    queryStr = String.Format("DELETE FROM {0} WHERE {1} = {2}",
                        dbChange.TableName,
                        dbChange.PrimaryKeyName,
                        dbChange.PrimaryKeyValue);
                    break;
                case Update:
                    queryStr = String.Format("UPDATE {0} SET {1} = '{2}' WHERE {3} = {4}",
                        dbChange.TableName,
                        dbChange.ColumnName,
                        dbChange.PreviousValue,
                        dbChange.PrimaryKeyName,
                        dbChange.PrimaryKeyValue);
                    break;
            }

         DBQuery.ExecuteCommand(ConnectionString, queryStr, 10);

        }

我的问题:完美无缺,并进行必要的更改。但有时随机数据库操作无法正常完成。像某些值未更新或某些行未被删除。

我努力找出背后可能的原因。可能的原因(竞争条件或其他什么?)和纠正措施。提前谢谢。

1 个答案:

答案 0 :(得分:0)

排除在查询后更改记录值的SaveChanges或其他查询,您需要跟踪异常和ExecuteCommand的结果(应该是1),否则将很难理解该问题。

无论如何,只是为了开始,错误可能是:
1. SQL语法(更新查询中的SQL注入或无效字段名称)。因此,请将dbChange.PreviousValue替换为dbChange.PreviousValue.Replace("'", "''")并引用字段名称 2.参照完整性违规(您可以使用ExecuteCommand返回值进行检查。