Fix ExecuteNonQuery() return value logic to be case sensitivity proof.

pull/153/head
Laurents Meyer 2 years ago
parent 84c47a04c4
commit ca8472c96e

@ -290,12 +290,14 @@ namespace EntityFrameworkCore.Jet.Data
_connection.RowCount = InnerCommand.ExecuteNonQuery();
//For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command.
//For all other types of statements, the return value is -1. If a rollback occurs, the return value is also -1.
//This from from the docs, however, it actually seems to be returning 0 for things like CREATE TABLE/INDEX, EXEC
//Workaround this
var commandtype = newCommandText.Trim().Substring(0, 10);
if (commandtype.Contains("INSERT") || commandtype.Contains("UPDATE") || commandtype.Contains("DELETE"))
// For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command.
// For all other types of statements, the return value is -1. If a rollback occurs, the return value is also -1.
// This is how it is stated in the docs, however, the underlying connection actually seems to be returning 0
// for statements like CREATE TABLE/INDEX, EXEC etc.
var commandType = newCommandText.Trim().Substring(0, 10);
if (commandType.Contains("INSERT", StringComparison.OrdinalIgnoreCase) ||
commandType.Contains("UPDATE", StringComparison.OrdinalIgnoreCase) ||
commandType.Contains("DELETE", StringComparison.OrdinalIgnoreCase))
{
return _connection.RowCount;
}

Loading…
Cancel
Save