2017-04-21 10 views
1

linq(またはDynamicLinqのようないくつかのlinq拡張子)でカスタムのraw sqlを挿入することは可能ですか?そうでない場合は、どうすれば可能でしょうか?LINQ to SQL - カスタムRaw SQLを挿入しますか?

これはDocumentDBで役に立ちます。ここに私が意味するものの例があります。

class Document { 
    Guid id { get; set; } 
    DateTime createdAt { get; set; } 
    DocumentType type { get; set; } 
    dynamic content { get; set; } 
} 

queryable 
    .Where((d) => d.type == DocumentType.IceCream) 
    .RawSqlWhere("CONTAINS(content.flavor, 'choco')") 
    .Where((d) => d.createdAt < DateTime.Now); 

Linqがこれに適していない場合、どうすればlinqのサポートを失うことなくこれを行うことになりますか?

+0

私はDapperを調べます。 DapperExtensionsは、LinqにDTOを使用する機能も提供します。 https://github.com/tmsmith/Dapper-Extensions –

+0

Uinsg SQL Serverでは、LINQ(式付き)とDynamic LINQを混在させることができます。 SInce Dynamic LINQは文字列を式に構文解析するだけですが、これは式を受け入れるすべてのSQLプロバイダでうまくいくと思います。 –

+0

主な問題は、CONTAINSはSQL関数であり、私のドキュメントは非常に動的であり、デシリアライズできないと思います。だからこそ私はsqlを注入することを望んでいたのです –

答えて

0

DocumentDB LINQプロバイダは、動的LINQをサポートしています。これを使用してランタイムLINQ式をビルドすることができます。 SQLのインジェクトは現在サポートされていません。