2012-06-28 207 views
2

我想用LINQ查詢MySQL數據庫。LINQ to MySQL查詢返回無結果

首先,我已經安裝了MySQL .NET連接器。然後在Visual Studio中創建一個新的控制檯應用程序。

然後我點擊工具欄上的Data,然後點擊Add New Data Source

在數據源配置嚮導中,我選擇Database => Dataset => New Connection,我配置我的連接參數,然後選擇我的相關表格,視圖等並點擊完成。

我的數據源名爲Foo,我想查詢的表名爲Bar

然後我嘗試使用LINQ像下面查詢我的數據表:

fooDataSet.barDataTable foobar = new fooDataSet.barDataTable(); 
var results = from data in foobar 
       select data; 

foreach (var result in results) 
{ 
    Console.WriteLine(result); 
}; 

我假定這是相當於下面的MySQL

SELECT * FROM BAR; 

即使我的表(酒吧)有大量的數據,我沒有收到任何數據。當我斷點適當和可變深入到我的結果的結果視圖,它只是saysЖ

枚舉沒有結果

enter image description here

我要去哪裏錯了嗎?

+0

如果你斷點Console.Write並看看結果,你應該能夠看到正在使用的實際SQL。可能值得檢查的是沒有任何奇怪的事情發生。 – Jerryf

+0

年數據源一定有問題 – JohnnBlade

回答

0

我想通通過在Windows窗體上重複初始步驟,將要從Server Explorer查詢的表拖到Windows窗體上,然後分析代碼。

事實證明,我首先需要創建一個我的數據集(Foo)的實例,然後爲我的表(Bar)創建一個TableAdapter實例。

一旦我完成了這一步,我就調用我的表適配器的Fill方法,使用點符號傳遞數據集中的表名稱。

然後,我運行我的表適配器的GetData()的AsEnumerable()擴展方法以獲得一個EnumerableRowCollection,然後我可以針對使用LINQ運行查詢。我的代碼如下:

static void Main(string[] args) 
{ 
    fooDataSet fooDataSet = new fooDataSet(); 
    fooDataSetTableAdapters.barTableAdapter barTableAdapter = new fooDataSetTableAdapters.barTableAdapter(); 

    barTableAdapter.Fill(fooDataSet.bar); 

    var myDataTable = barTableAdapter.GetData().AsEnumerable(); 

    var bnl = from results in myDataTable 
       select results; 

    Console.ReadLine(); 
} 

側面說明,在Visual Studio創建XSD文件,在每個表的每個字段默認設置爲拋出一個異常,如果您嘗試標準適用於柱與任何空值。您需要將XSD中字段的NullValue屬性更改爲(Empty)或(Null)以避免出現這種情況。

6

您正在創建一個新的表,然後試圖從中讀取數據(!有什麼也沒有,其新)

在LINQ to SQL中你可以這樣做:

var results = from data in fooDataset.bar 
       select data; 

foreach (var result in results) 
{ 
    Console.WriteLine(result); 
}