У меня есть страница ASP.Net, использующая ADO для запроса базы данных доступа MS, и в качестве учебного упражнения я хотел бы включить LINQ. У меня есть одна простая таблица под названием Котировки.
Поля: QuoteID, QuoteDescription, QuoteAuthor, QuoteDate. Я хотел бы выполнить простые запросы, например: «Дайте мне все цитаты после 1995 года».
Как мне включить LINQ на этот сайт ASP.Net (C#)
В принципе, мой вопрос: работает ли LINQ для MS Access?





Я не считать LINQ to SQL поддерживает Access. Однако, если ваша таблица достаточно мала, чтобы поместиться в памяти, LINQ to DataSet позволит вам довольно легко запрашивать данные и т. д., Особенно строго типизированные наборы данных.
Вы можете объяснить, что вы имеете в виду под LINQ to DataSet. прямо сейчас в моем запросе я запрашиваю данные
LINQ to DataSet - это в основном набор методов расширения для DataSet и DataTable. Идея состоит в том, чтобы иметь возможность выполнять запросы к данным, которые вы уже извлекли из базы данных. См. danielmoth.com/Blog/2007/07/linq-to-dataset.html для получения дополнительной информации.
Вы не имеете в виду «доступ» - вы имеете в виду JET.
LINQ to SQL не поддерживает Access (то есть нет поставщика Access / Jet для LINQ), но вы можете запросить DataSet с помощью LINQ. Это означает, что вы заполняете свой DataSet любыми возможными данными из вашей базы данных, которые могут вам понадобиться в ваших результатах, а затем выполняете фильтрацию на стороне клиента. После того, как у вас есть типизированный DataSet и вы Fill () его TableAdapter, вы делаете что-то вроде этого:
var year = 1995; // you can pass the year into a method so you can filter on any year
var results = from row in dsQuotes
where row.QuoteDate > year
select row;
Вам нужно будет решить, стоит ли это того. Вам нужно будет заполнить свой DataSet все кавычками, а затем использовать LINQ для фильтрации только тех котировок, которые были после 1995 года. Для небольшого количества данных, конечно, почему бы и нет? Но для очень большого количества данных вам нужно убедиться, что он не будет слишком медленным.
Однако, если вы используете DataSet, вы можете писать собственные запросы, которые становятся новыми методами TableAdapter. Таким образом, вы можете поместить правильный SQL для вашего запроса в метод FillByYear () в вашем TableAdapter и использовать его для заполнения вашей типизированной таблицы DataTable. Таким образом, вы получите обратно только те данные, которые вам нужны.
Если вы идете по этому маршруту, помните, что Access / Jet использует позиционные параметры, а не именованные параметры. Так что вместо
SELECT * FROM Quotes WHERE Year(QuoteDate) > @Year
вы бы использовали что-то вроде этого:
SELECT * FROM Quotes WHERE Year(QuoteDate) > ?
См. Мой ответ здесь stackoverflow.com/questions/295772/…, используя VB.net в Windows Forms