Npgsql documentation指出使用NpgsqlParameter<T>
更好,因为它是强类型的,并且不会因装箱值类型导致的无用堆分配而使垃圾收集器紧张。
我有以下两个命令声明了用于特定参数的数据类型:
不使用NpgsqlParameter<T>
:
command.Parameters.AddWithValue("id", NpgsqlTypes.NpgsqlDbType.Integer, 123);
使用
NpgsqlParameter<T>
:
cmd.Parameters.Add(new NpgsqlParameter<Int32>("id", NpgsqlTypes.NpgsqlDbType.Integer) { TypedValue = 123 });
我的问题是,第一个命令是否等效于第二个命令(不包装
int
值),还是应该使用第二个命令?
我认为第一个只是告诉Npgsql使用哪种数据类型,但仍将int
置于框内。
Npgsql文档指出,使用NpgsqlParameter
[这并不是真正的答案,因为我相信哈维先生已经做了足够的事情,但是它比我可以发表的评论更长,并且没有格式,所以请您提前道歉。
NpgsqlParameter
[仔细考虑了我们从社区收到的意见后,我们决定将NpgsqlParameter<T>
与明确的NpgsqlDbType
一起使用。