2015-04-04 64 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); 

这一个按预期工作并返回日期。