Страница LINQ asp.net против MS Access

У меня есть страница ASP.Net, использующая ADO для запроса базы данных доступа MS, и в качестве учебного упражнения я хотел бы включить LINQ. У меня есть одна простая таблица под названием Котировки.

Поля: QuoteID, QuoteDescription, QuoteAuthor, QuoteDate. Я хотел бы выполнить простые запросы, например: «Дайте мне все цитаты после 1995 года».

Как мне включить LINQ на этот сайт ASP.Net (C#)

В принципе, мой вопрос: работает ли LINQ для MS Access?

См. Мой ответ здесь stackoverflow.com/questions/295772/…, используя VB.net в Windows Forms

Hannington Mambo 26.10.2017 06:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
1
17 493
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не считать LINQ to SQL поддерживает Access. Однако, если ваша таблица достаточно мала, чтобы поместиться в памяти, LINQ to DataSet позволит вам довольно легко запрашивать данные и т. д., Особенно строго типизированные наборы данных.

Вы можете объяснить, что вы имеете в виду под LINQ to DataSet. прямо сейчас в моем запросе я запрашиваю данные

leora 12.10.2008 00:28

LINQ to DataSet - это в основном набор методов расширения для DataSet и DataTable. Идея состоит в том, чтобы иметь возможность выполнять запросы к данным, которые вы уже извлекли из базы данных. См. danielmoth.com/Blog/2007/07/linq-to-dataset.html для получения дополнительной информации.

Jon Skeet 12.10.2008 00:35

Вы не имеете в виду «доступ» - вы имеете в виду JET.

David-W-Fenton 12.10.2008 00:49
Ответ принят как подходящий

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) > ?

Другие вопросы по теме