2015-04-04 95 views
-1

我正在從我的數據庫訪問表。我在Visual Studio 2013中添加了這些表格作爲數據集,但是當我嘗試使用它時,它顯示爲空。數據庫中的數據集爲空

這就是我想要做的事:

IQueryable<NorthwindDataSet.OrdersRow> LookupOrdersForYear(int year) 
{ 
    using (var context = new NorthwindDataSet()) 
    { 
     var orders = 
      from order in context.Orders 
      where order.OrderDate != null && order.OrderDate.Year >= year 
      select order; 
     return orders.ToList().AsQueryable(); 
    } 
} 

我發現orders是空的,所以我加了

Console.WriteLine(context.Orders.Count); 

這給了我的0輸出了什麼問題?

+1

什麼DataSet? 'year'的價值是多少?如果您完全刪除'where'條款,您會得到什麼嗎? – Crowcoder 2015-04-04 16:40:41

+0

@Crowcoder即使我刪除了where子句,我也沒有得到任何東西。數據集來自Northwind數據庫,我通過選擇** Add data source **添加到我的Visual Studio項目中。這段代碼是方法的一部分,其中year是輸入(int的類型)。 – mmking 2015-04-04 17:03:14

+0

你的DataSet和你的DbContext是不同的東西。我們沒有足夠的信息來幫助,這就是爲什麼,我認爲是downvote。 – Crowcoder 2015-04-04 17:16:36

回答

0

我發現我需要用數據填充我的數據集,否則它將保持空白。

一個SqlDataAdapter的伎倆:

SqlDataAdapter adapter = new SqlDataAdapter(); 
SqlCommand command = new SqlCommand("SELECT * FROM Orders"); 
string connString = @"Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"; 
SqlConnection conn = new SqlConnection(connString); 

adapter.SelectCommand = command; 
adapter.SelectCommand.Connection = conn; 
adapter.Fill(context.Orders); 

有用於SqlDataAdapter.Fill幾個重載方法,它們中的一種採用數據集和其他需要的數據表。當我第一次使用SqlDataAdapter的,我用了一個,需要一個數據集

adapter.Fill(context); 

這還是給了我一個空context.Orders。正確的需要一個數據表:

adapter.Fill(context.Orders); 

這一個按預期工作並返回日期。