2

我有以下接受 SQL 参数来运行自定义查询的基类方法。使用使用 SQLite 作为内存数据库的 ABP 测试框架,在运行集成测试时出现以下错误。

 public int ExecuteNonQuery(string query, SqlParameter[] parameters, 
                             CommandType commandType = CommandType.Text)

消息:System.InvalidCastException:无法将类型 >'System.Data.SqlClient.SqlParameter' 的对象转换为类型 >'Microsoft.Data.Sqlite.SqliteParameter'。

可能的解决方法是使用 localDB 而不是 SQLite。是否有任何其他解决方案可以最大限度地减少此处实施的变化?

4

1 回答 1

1

来自https://www.learnentityframeworkcore.com/raw-sql

如果您使用格式字符串或字符串插值,Entity Framework Core 将参数化 SQL:

// Format string
var author = db.Authors.FromSql("SELECT * From Authors Where AuthorId = {0}", id).FirstOrDefault();

// String interpolation
var author = db.Authors.FromSql($"SELECT * From Authors Where AuthorId = {id}").FirstOrDefault();

❗ Entity Framework Core 只会参数化内插字符串,如果它们被内联提供给FromSql方法调用。

于 2019-08-08T00:00:00.940 回答