gpt4 book ai didi

c# - 使用 Linq-to-Sql 表达式生成 SQL 子句

转载 作者:行者123 更新时间:2023-11-30 17:15:04 24 4
gpt4 key购买 nike

我想创建一个存储库模型,它可以采用表达式并使用 Linq-To-Sql 生成所需的 SQL 语句。

例如,我有这样一个函数:

// Possible criteria
Expression<Func<Purchase,bool>> criteria1 = p => p.Price > 1000;

// Function that should take that criteria and convert to SQL statement
static IEnumerable<Customer> GetCustomers (Expression<Func<Purchase,bool>> criteria)
{
// ...
}

在函数内部,我想使用 Linq-To-Sql 将条件转换为 SQL 语句。

我知道您可以使用 DataContext.Log 查看执行的查询,使用 DataContext.GetCommand(query).CommandText 查看执行前的完整查询.但是,我只想生成整个表达式的一部分。

我希望完成的是使我的存储库抽象出底层技术(Linq-to-Sql、Dapper 等)。这样我就可以将表达式传递到存储库,让它生成正确的语句并使用正确的技术来执行它。

最佳答案

你可以这样做:

string sql = DataContext.GetTable<Customer>().Where(criteria).ToString();

ToString() 为您提供 SQL 表达式。然后您可以使用正则表达式提取 WHERE 子句。

关于c# - 使用 Linq-to-Sql 表达式生成 SQL 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8233795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com