Database 如何在Dapper查询中传递动态参数中的多个条件,就像我们传递in运算符一样
我想在查询我的PostgreSQL数据库时传递多个实体代码。我收到以下代码错误: 我希望查询的工作方式如下所示:Database 如何在Dapper查询中传递动态参数中的多个条件,就像我们传递in运算符一样,database,postgresql,performance,dapper,dynamicparameters,Database,Postgresql,Performance,Dapper,Dynamicparameters,我想在查询我的PostgreSQL数据库时传递多个实体代码。我收到以下代码错误: 我希望查询的工作方式如下所示: SELECT * FROM public.test WHERE entity_code IN('value1', 'value2'); 下面是我的代码,它在我传递单个值时起作用: string query = "SELECT * FROM public.test WHERE entity_code = @Entity_Code";
SELECT * FROM public.test WHERE entity_code IN('value1', 'value2');
下面是我的代码,它在我传递单个值时起作用:
string query = "SELECT * FROM public.test WHERE entity_code = @Entity_Code";
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("@Entity_Code", "value1");
var connection = _postgreSqlContext.Database.GetDbConnection();
var results = connection.Query<Test>(query, new DynamicParameters(dictionary));
string query=“SELECT*FROM public.test其中entity\u code=@entity\u code”;
字典=新字典();
添加(“@Entity_Code”,“value1”);
var connection=_postgreSqlContext.Database.GetDbConnection();
var results=connection.Query(查询,新的动态参数(字典));
下面是针对同一参数添加多个值时不起作用的代码:
string query = "SELECT * FROM public.test WHERE entity_code IN @Entity_Code";
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("@Entity_Code", new string[]{ "value1", "value2" });
var connection = _postgreSqlContext.Database.GetDbConnection();
var results = connection.Query<Test>(query, new DynamicParameters(dictionary));
string query=“SELECT*FROM public.test WHERE entity\u code IN@entity\u code”;
字典=新字典();
添加(“@Entity_Code”,新字符串[]{“value1”,“value2”});
var connection=_postgreSqlContext.Database.GetDbConnection();
var results=connection.Query(查询,新的动态参数(字典));
Postgres在-语法上有一点不同。您应该使用ANY
:
string query=“SELECT*FROM public.test其中entity\u code=ANY(@entity\u code)”;
var dictionary=newdictionary();
添加(“@Entity_Code”,新字符串[]{“value1”,“value2”});
var connection=_postgreSqlContext.Database.GetDbConnection();
var results=connection.Query(查询,新的动态参数(字典));
请参见此问题的答案: