[Извиняюсь за длинный вопрос, но я подумал, что другим будет яснее ответить]
У меня есть база данных 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
Есть какие-нибудь подсказки, почему это должно происходить?