Dapper 在查询中自定义选择项<;对象>;衣冠楚楚
我是个衣冠楚楚的新手。 我想从conn.Query()中选择动态项,使其在SQL中执行存储过程 我的代码类似于:Dapper 在查询中自定义选择项<;对象>;衣冠楚楚,dapper,Dapper,我是个衣冠楚楚的新手。 我想从conn.Query()中选择动态项,使其在SQL中执行存储过程 我的代码类似于: connection.Open(); var parameters = new DynamicParameters(); parameters.Add("@name", x.GetValue<string>("Name")); parameters.Add("@lastname
connection.Open();
var parameters = new DynamicParameters();
parameters.Add("@name", x.GetValue<string>("Name"));
parameters.Add("@lastname", x.GetValue<string>("LastName"));
var query = connection.Query<Costumer>(sql: "GetCostumer", param: parameters, commandType: CommandType.StoredProcedure);
如果问题是只选择两列,那么在最简单的级别上,您可以完全执行您已经在执行的操作,即
var finalResult = (from item in query
select new {
item.Name,
item.LastName
}).ToList();
请注意,这会将所有列提取回客户机,然后在那里重新映射。如果要在服务器上执行列筛选,则需要使用类似于INSERT EXEC
的内容,并在后续的SELECT
,即
DECLARE @table_var TABLE (cols)
INSERT INTO @table_var (cols) EXEC proc {args}
SELECT foo, bar FROM @table_var
虽然一个更干净的实现可能是公开一个UDF,但您可以使用:
SELECT foo, bar FROM dbo.SomeFunction(args);
var parameters = new {
name = x.GetValue<string>("Name"),
lastname = x.GetValue<string>("LastName")
};
var query = connection.Query<Costumer>("GetCostumer", parameters,
commandType: CommandType.StoredProcedure);
另一方面,如果
类型不存在,可以通过动态
和非泛型查询
方法来避免中间类型,但实际上它的效率略低于上述方法,因此应谨慎使用
还要注意,在这种情况下,您不需要动态参数
;您可以使用:
SELECT foo, bar FROM dbo.SomeFunction(args);
var parameters = new {
name = x.GetValue<string>("Name"),
lastname = x.GetValue<string>("LastName")
};
var query = connection.Query<Costumer>("GetCostumer", parameters,
commandType: CommandType.StoredProcedure);
var参数=新建{
name=x.GetValue(“名称”),
lastname=x.GetValue(“lastname”)
};
var query=connection.query(“getCustomer”,参数,
commandType:commandType.StoredProcess);
如果问题是只选择两列,那么在最简单的级别上,您可以完全按照您已经在做的操作,即
var finalResult = (from item in query
select new {
item.Name,
item.LastName
}).ToList();
请注意,这会将所有列提取回客户机,然后在那里重新映射。如果要在服务器上执行列筛选,则需要使用类似于INSERT EXEC
的内容,并在后续的SELECT
,即
DECLARE @table_var TABLE (cols)
INSERT INTO @table_var (cols) EXEC proc {args}
SELECT foo, bar FROM @table_var
虽然一个更干净的实现可能是公开一个UDF,但您可以使用:
SELECT foo, bar FROM dbo.SomeFunction(args);
var parameters = new {
name = x.GetValue<string>("Name"),
lastname = x.GetValue<string>("LastName")
};
var query = connection.Query<Costumer>("GetCostumer", parameters,
commandType: CommandType.StoredProcedure);
另一方面,如果
类型不存在,可以通过动态
和非泛型查询
方法来避免中间类型,但实际上它的效率略低于上述方法,因此应谨慎使用
还要注意,在这种情况下,您不需要动态参数
;您可以使用:
SELECT foo, bar FROM dbo.SomeFunction(args);
var parameters = new {
name = x.GetValue<string>("Name"),
lastname = x.GetValue<string>("LastName")
};
var query = connection.Query<Costumer>("GetCostumer", parameters,
commandType: CommandType.StoredProcedure);
var参数=新建{
name=x.GetValue(“名称”),
lastname=x.GetValue(“lastname”)
};
var query=connection.query(“getCustomer”,参数,
commandType:commandType.StoredProcess);
问题是什么?什么不起作用?或者你还需要什么?你只是想要两个专栏吗?问题是什么?什么不起作用?或者你还需要什么?你只是想要两列吗?