如果我想足夠糟糕,我可以添加額外的LINQ結構到LINQ到SQL(因爲我可以創建自己的LINQ提供程序)?例如,許多內置的LINQ操作符(XYZ.Any()
)直接轉換爲SQL(例如)。我可以擴展LINQ-to-SQL支持的操作符嗎?
如果我需要一個專門的構造,我甚至可以擴充這個集合,還是必須將它們烘焙到實際的LINQ-to-SQL提供程序中?
我該如何去添加一個新的操作符實現? C#擴展方法是否足夠執行該工作?
如果答案是肯定的,那麼有人會傾向於能夠通過LINQ-to-SQL生成的動態SQL替換很多(全部?)的sproc功能嗎?
我很熟悉從AST解析/表達式樹結束的事情。我其實並沒有確切的需求,但大多隻是想知道未來的用法。這太糟糕了,因爲如果*所有內容都可以在LINQ中表達,它將會是一個非常酷的模型。現在當你提到SubSonic&NHibernate時,是因爲它們允許擴展,或者只是作爲另一個提供者來提供我需要的東西? – mckamey 2009-08-21 14:58:28
我不知道任何SubSonic或NHibernate的內置表達式擴展性,但至少您可以選擇下載源代碼並添加您自己的。像在LINQ中表達_everything_一樣酷,有一些SQL結構不能很好地映射。這可能會隨着.NET 4中的擴展表達式支持而改變。 – dahlbyk 2009-08-21 16:29:10