我在讀那個linq是懶惰的,它沒有執行查詢,直到它需要。無連接使用Linq到Sql
如果這就是爲什麼這段代碼失敗的情況下:
var db = new Data.DataClasses1DataContext(@"Data Source=.\sqlexpress;Initial Catalog=MyDb;Integrated Security=True");
var companies = db.Customers.Where(x => x.Company=="Foo");
var query = companies.ToString();
如果我運行的計算機代碼,沒有SQL服務器上安裝它不會運行,爲什麼?我沒有做任何需要數據的陳述。如果我打電話給companies.ToList()
,那麼它的代碼就會失敗。有沒有一種方法可以在不使用連接的情況下使用Linq to SQL Classes
。我知道我做ToList()的那一刻,或者嘗試枚舉結果,我會得到一個錯誤。 我只是想使用Linq to Sql Classes來生成SQL語句並將它們看作字符串。
我有一個客戶端和服務器。服務器是WCF服務,客戶端是控制檯應用程序。如果用戶沒有輸入,我將發送加密查詢。我希望使用Linq to Sql classes
來生成我的查詢,但它並沒有讓我必須在客戶端上安裝sql server,以便我可以生成查詢。
我的臨時解決方案是在同一臺服務器上創建第二個數據庫。該數據庫將被允許接受遠程連接和它的整個目的是使該行
變種分貝=新Data.DataClasses1DataContext(@「一些遠程連接字符串」);
工程。一旦我初始化該行,我將永遠不需要再次連接。這個不成立。
我不相信company.ToString()會返回SQL查詢。它應該返回查詢的結果,在這種情況下它是IEnumerable。ToString() –
evanb
如果您不知道如何編寫SQL語句,但您確實知道如何編寫Linq2Sql Lambda表達式,那麼使用[LINQPad](https://www.linqpad.net)這樣的產品會非常容易。 /)編寫代碼,然後查看SQL語句的外觀。 –
'companies.ToString()'將生成sql語句。此外,我可以使用'DataContext.GetCommand'提取要在db上執行的sqlCommands。加上它的速度更快,更安全,我認爲用Linq構建查詢而不是將它們放入字符串中 –