[Apologies for long question but I thought it would be clearer for others to answer]
I have a Microsoft Access database and it contains a table "Customers" with following columns:
- ID (auto number)
- Name (Text)
- Active (yes/no)
I created the database table class in C# as below:
[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;
}
And I am using following code snippet to get the products which are 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 ());
}
}
The problem is that above query results in "NO RECORDS". I tried to analysed the SQL generated and it says something like below:
SELECT [t0].[ProductID] AS [ID], [t0].[ProductName] AS [Name], [t0].[Active]
FROM [Products] AS [t0]
WHERE [t0].[Active] = 1
Any clues why it should be happening?