Linq-to-SQL式を使用してSQL句を生成する

c# dapper linq-to-sql

質問

Expressionを使用し、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句を引き出すことができます。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ