[很抱歉问题很长,但我认为其他人回答会更清楚]
我有一个 Microsoft Access 数据库,它包含一个包含以下列的“客户”表:
- ID(自动编号)
- 名称(文字)
- 活跃(是/否)
我在 C# 中创建了数据库表类,如下所示:
[Table (Name = "Products")]
public class Product
{
[Column (IsPrimaryKey = true, Name = "ProductID")]
public int ID;
[Column (Name = "ProductName")]
public string Name;
[Column (Name = "Active")]
public bool Active;
}
我正在使用以下代码片段来获取处于活动状态的产品:
using (var con = new OleDbConnection
(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\LearnLinq.accdb")) {
var db = new DataContext (con);
var productTable = db.GetTable<Product> ();
var allProducts = from p in productTable
where p.Active
select p;
foreach (var p in allProducts) {
AddLine ("ID: " + p.ID.ToString () +
", Name: " + p.Name +
", Active: " + p.Active.ToString ());
}
}
问题是上述查询导致“无记录”。我试图分析生成的 SQL,它说如下:
SELECT [t0].[ProductID] AS [ID], [t0].[ProductName] AS [Name], [t0].[Active]
FROM [Products] AS [t0]
WHERE [t0].[Active] = 1
任何线索为什么它应该发生?