hehe、私たちはちょうど周囲をハッキングしませんか?ですから、まだ完全には動作していないので、マッピング情報を動的に注入する方法を理解する必要がありますが、これまでのところは有望です。
私は再びそれについて私に思い出させるためのダミアンのおかげで、このコードIQToolkitを使用して
var provider = new DbEntityProvider(new SqlConnection(), new TSqlLanguage(), new ImplicitMapping(), new QueryPolicy());
var exp = provider.GetTable<Hey>().Where(d => d.Born.Month == 1 || (!String.IsNullOrEmpty(d.Yo) && d.Born == DateTime.Now)).Expression;
var sql = ((QueryProvider)provider).GetQueryText(exp);
で、このSQL
SELECT t0.[Born], t0.[Yo]
FROM [Heies] AS t0
WHERE ((MONTH(t0.[Born]) = 1) OR (NOT (t0.[Yo] IS NULL OR t0.[Yo] = '') AND (t0.
[Born] = @p0)))
を生成することができたので、きました!誰かがLinq2Sql経由でSQLを生成する同様の方法を持っている場合、私はあなたから聞いて欲しいので、IQToolkitへの依存を緩めることができます。私は、各パラメータの値を抽出する時に壁にヒットしている浮気をたくさんした後
更新
。多くのソースを読んだら、それは実際のクエリの実行のために遠くに隠されているようです。ので、多分私はちょうどその
var xml = Generate<NewsProperty>();
var mapping = XmlMappingSource.FromUrl(xml);
var ctx = new DataContext(new SqlConnection("..."), mapping);
var query = ctx.GetTable<NewsProperty>().Where(n => n.Date.Year == 2010).OrderBy(n => n.Date).Take(5);
var cmd = ctx.GetCommand(query);
string sql = cmd.CommandText;
foreach (DbParameter param in cmd.Parameters)
{
sql = sql.Replace(param.ParameterName, param.Value.ToString());
}
に固執する必要があり、私は大体同じことをこのコードを思い付い/
Linq2Sqlに見た後:まあ、私は、クエリが実行されないようにするものを、推測
Linq2SQLを使用しない理由がわかりません。 – VVS
しかし、1つの重要な問題は、実行時にテーブルと列の名前を知ることができないので、Linq2Sqlに渡すdbmlスキーマを作成する方法はありません –
明白なあなたは見なければならない点がないからです。私は特定のドメインの問題を解決する方法を尋ねることはありません。それはかなりうまく動いていて、OrderByメソッドのような単純なものに対して表現木を喜んで使用しているからです。私はちょっと神経質だけど、彼らは任意の複合体を得ることができるので、SQLに解析するためのホイールを作り直すことは、とにかくそれほど汎用的であれば、ほとんどの場合ばかげているようだ。 –