1

誰かが取得のマイナス面を説明できるかどうか疑問に思っています

(Expression<Func<T, bool>>) Expression.Body

実行時にこれを文字列として操作しますか?

たとえば、次の場合

public partial class Tests : Form
{
    public Tests()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        TestClass t = new TestClass();
        textBox1.Text = t.Evaluate(templates => templates.usable == true && templates.name == "tc1");
    }       
}

public class TestClass
{
    public string name { get; set; }
    public bool usable { get; set; }
}

public static class Helpers
{
    public static string Evaluate<T>(this T input,Expression<Func<T, bool>> Expression) where T : class
    {

        return Expression.Parameters.Single().Name + " " + Expression.Body;

    }
}

返す

templates ((templates.usable == True) AndAlso (templates.name == "tc1"))

これを取得して正規表現で解析すると、どのようなパフォーマンスの問題が発生する可能性があるのか​​ 疑問に思っています

なぜ?という質問に答えて。私は Dapper を少しいじっていますが、既存の拡張機能 (私が見たもの) はどれも魅力的ではありません

たとえば、EFと同様の方法で操作できるようにしたいと思います

_repo.Select(templates=>templates.usable== true && templates.id == templateId);
4

1 に答える 1

1

テキストを解析するのではなく、実際の表現を使用するように微調整していただきありがとうございます。興味のある人のために、sqlexpressionプロジェクトの最初のドラフトへのリンクを投稿しました。Googleコード-SqlExpression.cs

作成されるパラメーターはDapperのDynamicParametersですが、標準のSQLパラメーターと簡単に交換できます。

まだ多くのテストを行っていませんが、クエリはこの段階でかなりうまく機能しているようです

于 2012-06-23T10:30:46.237 に答える