2017-04-21 69 views
1

是否有可能使用linq(或DynamicLinq等一些linq擴展名)插入自定義原始sql。如果不是,這將如何成爲可能?LINQ to SQL - 插入自定義原始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動態LINQ除了解析表達式的字符串之外什麼都不做,我認爲這應該適用於任何接受表達式的SQL提供者。 –

+0

我猜主要的問題是,CONTAINS是一個SQL函數,我的文檔是如此動態,他們不能被反序列化。所以這就是爲什麼我希望只注入sql –

回答

0

DocumentDB LINQ提供程序支持動態LINQ。您可以使用它來構建運行時LINQ表達式。目前不支持注入SQL。