标签: sqlkata

如何在Sqlkata中形成多个Join Condition sql查询

我正在尝试使用 Sqlkata 构建 Sql 查询。我能够为一个连接条件构建正确的 sql 查询,但是对于 And Condition 我面临问题

var empDeptQuery = new Query("employee");
empDeptQuery.Select("employee.Name", "dept.Deptname");
empDeptQuery.Join("dept", join => join.On("employee.deptid", "dept.deptid"));          

SqlResult empDeptSqlKataQuery = compiler.Compile(empDeptQuery);

Run Code Online (Sandbox Code Playgroud)

最终查询 -empDeptSqlKataQuery.Sql 是

SELECT [employee].[Name], [dept].[Deptname] FROM [employee] 
INNER JOIN [dept] ON ([employee].[deptid] = [dept].[deptid])
Run Code Online (Sandbox Code Playgroud)

我想在 join 子句中添加更多条件,如下所示。

SELECT [employee].[Name], [dept].[Deptname] FROM [employee] 
INNER JOIN [dept] ON ([employee].[deptid] = [dept].[deptid] And [employee].[empdeptname]=[dept].[departmentName])

Run Code Online (Sandbox Code Playgroud)

我试过这个,但没有得到我的预期

var empDeptQuery = new Query("employee");
empDeptQuery.Select("employee.Name", "dept.Deptname");
empDeptQuery.Join("dept", join => join.On("employee.deptid", "dept.deptid"));
empDeptQuery.Join(empDeptQuery, join => join.On("employee.empdeptname", "dept.departmentName"));

 SqlResult empDeptSqlKataQuery = compiler.Compile(empDeptQuery); …
Run Code Online (Sandbox Code Playgroud)

c# sqlkata

7
推荐指数
1
解决办法
2305
查看次数

如何在SqlKata中将多个WHERE子句连接在一起?

我正在使用SqlKata创建动态SQL查询。我有一个条件列表,存储在数据库中,条件是根据我的业务规则生成的。这是我的代码示例:

var list = new List<Query>();
foreach(var rule in rules){
    var q = new Query()
       .Where(x=> x.Where("Price", "<", rule.Price).OrWhere("GoodsType", "=", rule.Type));
    list.Add(q);
}
Run Code Online (Sandbox Code Playgroud)

现在,我想将此列表项连接在一起,但是Where()扩展的重载都不接受Query类型参数。有没有办法将where子句连接在一起?

这是我需要生成的预期查询的一部分。

select * from ship_schedule where Path = @path and scheduleDate= @Date
AND (FD.IssueType ='O' OR fd.Path!='ILMTOP' OR  (fd.Path='ILMTOP' AND F.carrier !='MAL'))
AND (FD.IssueType ='O' OR fd.Path!='TOPILM' OR  (fd.Path='ILMTOP' AND F.carrier !='MAL'))
Run Code Online (Sandbox Code Playgroud)

我需要创建查询的第二行到最后。

.net c# sql sqlkata

4
推荐指数
1
解决办法
908
查看次数

在 Sql Kata 中获取原始 sql 字符串

我纯粹使用 SqlKata 在 C# 中构建 sql 查询。我想获取我构建的输出Query,获取原始(编译的)sql 字符串,并针对 SQL 执行它。

我认为这会做到:

var factory = new QueryFactory(null, new SqlServerCompiler());
var query = new Query();
...
var sqlText = factory.Compiler.Compile(query).Sql;
Run Code Online (Sandbox Code Playgroud)

但这给出了:

SELECT TOP (@p0) [AllStarFull].[GameNumber], [AllStarFull].[LeagueId], [AllStarFull].[PlayedInGame] FROM [AllStarFull]
Run Code Online (Sandbox Code Playgroud)

这会引发异常,因为它(@p0)是一个参数,而不是实际值。

在文档中,它提到了引入,Logger但我并不真正需要日志记录功能(现在)。

https://sqlkata.com/docs/execution/logging

var db = new QueryFactory(connection, new SqlServerCompiler());

// Log the compiled query to the console
db.Logger = compiled => {
    Console.WriteLine(compiled.ToString());
};

var users = db.Query("Users").Get();
Run Code Online (Sandbox Code Playgroud)

有没有办法从Query填充了所有参数的sql 字符串中获取原始 sql 字符串?

c# sqlkata

4
推荐指数
1
解决办法
5309
查看次数

带有取消标记的 SqlKata

我有一些长时间运行的查询,如果浏览器取消了 API 请求,我想在执行过程中取消这些查询。我正在使用 SqlKata 执行查询,但没有看到取消令牌的参数。我怎样才能取消我的查询?

我想要这样的东西query.GetAsync<T>(cancelationToken: cancelationToken)

c# cancellation-token asp.net-core sqlkata

4
推荐指数
1
解决办法
414
查看次数

SqlKata 事务

我正在寻找将 SqlKata 用于项目。然而,该项目标准的一部分是查询应该能够作为事务执行。有没有办法可以使用 MSSQL 事务执行一个或多个查询?

非常感谢。

c# sql sql-server transactions sqlkata

3
推荐指数
1
解决办法
3812
查看次数

如何使用 SqlKata (Dapper) 从多列中获取值作为 IEnumerable

我正在使用 SQL,并且在我的数据库中有一个如下所示的表。

Id   Remark1    Remark2    Remark3    Remark4    
------------------------------------------------
1    AAA        BBB        CCC        DDD      
2    EEE        FFF        GGG        HHH   
Run Code Online (Sandbox Code Playgroud)

如何使用以下 DTO从Remark*列中获取所有值IEnumerable<string>

class MyDTO
{
   public int ID { get; }
   public IEnumerable<string> Remarks { get; }
}
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用 SqlKata (Dapper),您也可以在回答时使用它。

c# sql dapper sqlkata

1
推荐指数
1
解决办法
252
查看次数