Dapper,将参数从方法参数传递给查询Where子句

时间:2017-04-11 07:15:55

标签: .net-core dapper

我刚刚开始寻找针对.Net Core的Dapper,但我遇到了以下问题的问题,

   string query = @"
 SELECT u.*, a.* FROM [System].[UnLocation] u
INNER JOIN [Declaration].[AirTransportZone] a ON [u].[AirTransportZoneID] = 
[a].[AirTransportZoneID]
WHERE u.Code = @0 ";
        IUnLocationData domain = new UnLocationData();
   IQueryable<UnLocationData> data =  m_DbConnection.Query<UnLocationData, AirTransportZoneData, UnLocationData>(
           query,
            (u, a) =>
        {
            u.AirTransportZone = a;
            return u;
        },
            splitOn: "AirTransportZoneID"
            ).AsQueryable();

        domain.InjectFrom(data);

        return domain;

上面是一个方法,它采用一个参数&#34; code&#34;类型字符串。我只需要传递&#34; code&#34;的方法值。进入我的查询。通常我会做类似

的事情
WHERE u.Code = @0, code 

然而,在我的查询变量(查询,代码...)之后添加另一个参数不起作用。

1 个答案:

答案 0 :(得分:-1)

我的解决方案结果是相当直接的。这是在Query函数上添加另一个参数的简单例子:

新{Code = code}

 string query = @"
SELECT u.*, a.* FROM [System].[UnLocation] u
INNER JOIN [Declaration].[AirTransportZone] a ON [u].[AirTransportZoneID] = 
[a].[AirTransportZoneID]
WHERE u.Code = @Code";

        IUnLocationData domain = new UnLocationData();
        IEnumerable<UnLocationData> data = m_DbConnection.Query<UnLocationData, AirTransportZoneData, UnLocationData>(
            query, (u, a) =>
            {
                u.AirTransportZone = a;
                return u;
            },
            new { Code = code }, splitOn: "AirTransportZoneID"
            );