2011-03-15 69 views
3

LINQ2SQL相當不錯。輕鬆構建實體類並使用它。動態構建LINQ to SQL查詢,無需實體類

但是如果我不知道在編譯時什麼都不關於數據庫和表?

但我需要在「FooDb」中查詢「Foo」表;

我可以針對沒有任何實體類的數據庫運行Linq查詢嗎?

你能告訴我一個例子嗎?

回答

4

Linq2Sql是一個ORM - Object Relational Mapper

因此,在編譯應用程序之前,它需要知道數據庫結構以便生成可以與之交互的類。

簡而言之,您所問的是Linq2Sql或其他任何我知道的ORM。


您可以創建將查詢系統表,併爲您生成和負載類的應用程序,但我不知道你將如何與他們互動的代碼不知道事先的結構。

+0

好吧...它可以做它的映射的東西「在飛」? – Agzam 2011-03-15 22:20:15

+0

我的意思是我可以動態構建某種類型。我可以嗎?爲什麼我不能動態構建實體? – Agzam 2011-03-15 22:21:27

+1

@Agzem - 然而,你可能會有什麼意義?您的代碼不會了解這些類,您需要圍繞它們構建基礎結構才能開始使用它們。 – Oded 2011-03-15 22:22:48

0

爲了使LINQ to SQL正常工作,必須在某處編譯實體。因此,擁有動態模型的唯一方法就是構建一個動態組合,就像LINQPad一樣。這是可能的,但是這是很多工作。此外,如果你不知道數據庫是什麼樣子,你的LINQ查詢會是什麼樣子?

0

不,您不能動態或即時建立您的對象模型。

唯一相關(和非最佳,反直覺的,並且難以maintan)的方式做你想要將是什麼:

0

好這句話。怎麼樣WebMatrix.Data?

如果您需要方便地訪問數據庫,並且不想被打開連接,關閉等等困擾。而且你的項目不需要強類型的實體。

這是MVCConf的傑弗裏巴勒莫展示的東西。像這樣的一段代碼:

using WebMatrix.Data; 

... 

public IEnumerable<dynamic> Execute(){ 

    Database db = Database.Open("EasyTimeTracking"); 
    var employees= db.Query("select FullName, Startdate, EndDate from Employee"); 
    return employees; 

} 

是否足夠值得使用的,而不是在C#中做SQL的東西老路上?你怎麼看?