мне нужен класс для каждой таблицы для моей базы данных?

2

im пытается понять LINQ, поскольку я понимаю, что LINQ будет вашим DAL для вашего db, который, в свою очередь, автоматически создает для вас класс, который отображает вашу структуру db для вас, а затем вы можете выполнять запросы с использованием этого класса.

  • im пытается выполнить функцию, которая вернет результат моих запросов LINQ.
    • все примеры, которые я читал, кажется, указывают, что если я хочу, чтобы мои запросы были определенным типом, я должен создать для него определенный класс и использовать его как List.

Я правильно в своем предположении?? пожалуйста, просветите меня

Теги:
linq

3 ответа

6

"Linq" не является технологией ORM, это просто способ писать запросы типа операторов внутри .Net-языков. Вы не сказали, используете ли вы Ling для SQL или Linq для Entities, которые являются технологиями ORM, которые работают с Linq для сопоставления вашей схемы данных с таблицами.

Linq to SQL предоставит вам прямое сопоставление каждой таблицы с классом и обработает большую часть отмены, чтобы это сделать. Ваши запросы могут возвращать эти типы или использовать выражение Linq, вы можете "проецировать" эти типы на другие типы, которые вы создали сами.

Если вам нужна большая гибкость, Entity Framework позволит вам сопоставить одну таблицу с несколькими сущностями, несколькими таблицами с одним объектом и т.д. Для этого вам нужно сделать гораздо больше работы самостоятельно, поскольку у вас есть для изменения отображения вручную во многих случаях. Подобно Linq to SQL, запросы могут возвращать либо эти сгенерированные типы, либо определять их собственные типы в запросе.

  • 0
    Я пытаюсь создать функцию для запуска запроса linq и возврата результата .. - то, что я хочу ... вернуть все записи из таблицы "NDT_Equipment" публичный список <NDT_Equipment> GetALLRecords () {using (NDT_DB) { возврат (из a в NDT_DB.NDTEquipment выберите a); }} - где: NDT_DB - экземпляр класса контекста базы данных (автоматически сгенерированный): NDT_Equipment - частичный класс внутри класса контекста базы данных - я не могу скомпилировать это .. я получаю сообщение об ошибке «Вы пропустили приведение»
  • 0
    @ Денис, пожалуйста, отредактируйте свой пост, чтобы добавить это, а также какой ORM вы используете?
Показать ещё 4 комментария
2

По умолчанию конструктор Linq to SQL создаст класс для каждой таблицы в вашей базе данных. Созданный объект контекста базы данных будет иметь определение для каждой таблицы в вашей базе данных. Вы можете выполнять запросы Linq для этих определений таблиц и сохранять результаты в сгенерированных классах, у вас есть ваши запросы, генерирующие анонимные типы. Это зависит от вас.

  • 0
    «Вы можете выполнять запросы Linq для этих определений таблиц и сохранять результаты в сгенерированных классах» -> под этим вы подразумеваете классы, определенные с помощью структурированной таблицы, которая была автоматически сгенерирована в контексте моей базы данных?
  • 0
    Классы, генерируемые L2S, не хранятся в контексте данных. Все они хранятся в одном файле .cs. Имя файла - это имя вашего DBML + ".designer.cs".
1

Основываясь на названии вашего вопроса, я бы сказал нет. Могут быть случаи, когда у вас есть таблицы, которые вам не нужно сопоставлять с Linq2SQL. Один непосредственный пример, который приходит на ум, заключается в том, что если вы используете API-интерфейс членства ASP.NET, вам не нужно будет перетаскивать эти таблицы /sprocs/functions в конструктор, поскольку эти данные отображаются API.

Если вы используете конструктор (DBML файл), вы можете выбрать, какие объекты db должны вносить в ваше решение. Это способ, которым я это сделал, только привлечение тех объектов db, к которым я действительно нуждаюсь. В качестве другого примера я работал в одном магазине, который был сильно связан с идеей доступа всех db через хранимые процедуры. Поэтому в этом случае я работал со многими результатами [StoredProcedureName], которые я, в свою очередь, сопоставлял с другими объектами, а не с самими фактическими таблицами, которые даже не были определены в решении.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню