Linq to SQL Class Регенерация - PullRequest
       43

Linq to SQL Class Регенерация

8 голосов
/ 08 октября 2008

Я использовал этот замечательный инструмент LINQ to SQL для слоя доступа к данным в проекте asp.net. Я продолжаю вносить изменения в базовые таблицы, и для того, чтобы классы данных могли распознать изменения, мне нужно удалить и прочитать таблицу, которая изменилась. Есть ли какой-нибудь ярлык для восстановления слоя данных?

Ответы [ 5 ]

5 голосов
/ 08 октября 2008

Я столкнулся с этой же проблемой, и использование sqlmetal определенно является хорошим способом ее решения. Один из подходов заключается в создании пакетного файла, который выполняет вашу команду sqlmetal, и таким образом вы можете просто запустить пакет в любое время, когда вам нужно обновить классы Linq до SQL, но что еще более приятное решение, это использовать функцию Visual Studio Tools-> External Tools для создайте команду в Visual Studio, которая запускает sqlmetal с вашими параметрами. Это прекрасно работает, и вы даже можете перетащить созданную команду на панель инструментов для восстановления одним щелчком мыши.

3 голосов
/ 08 октября 2008

Вы можете использовать sqlmetal, который является генератором классов командной строки для linq to sql классов.

1 голос
/ 10 октября 2008

LINQ to SQL версии 1 не поддерживает обнаружение изменений схемы базы данных. Единственный способ изменить сгенерированные классы - это восстановить их с помощью конструктора или SQLMetal.

Имейте в виду, что между SQLMetal и конструктором не так много различий, дизайнер является более «симпатичным» интерфейсом для SQLMetal и скрывает многие параметры командной строки.

Я использую конструктор, потому что мне лень постоянно загружать командную строку.

Кроме того, убедитесь, что вы не записываете свой собственный код в сгенерированные классы, иначе вы потеряете его на регене. Все сгенерированные классы частичные , что означает, что вы можете легко добавлять свои собственные расширители в отдельный файл.

1 голос
/ 08 октября 2008

Для ситуаций / моделей, где SQLMetal не совсем обрезает, например, Из-за различных соглашений об именах в базе данных и вашей модели или некоторых других настроек в вашей модели L2S у меня есть надстройка для Visual Studio, которая добавляет команды для синхронизации вашего дизайнера L2S с базовой базой данных [схема]. (плюс куча других функций, связанных с L2S и EF)

Вы можете узнать больше об этом, скачать его и получить 30-дневную пробную лицензию от http://www.huagati.com/dbmltools/

0 голосов
/ 06 марта 2009

В прошлом, где я работал, мы создавали класс-оболочку для DataContext, который генерировал sqlmetal. Затем мы создали тонкий слой данных, который содержал приватный DataContext и все классы, сгенерированные sqlmetal.

Если для каких-либо операций в программном обеспечении требовалась информация из базы данных, они должны были пройти через этот слой-обертку, чтобы получить ее. Другими словами, LINQ to SQL не может появиться за пределами этого уровня данных.

Таким образом, всякий раз, когда нам приходилось перегенерировать классы через sqlmetal, только части уровня данных могли сломаться. Гораздо проще исправить один уровень, где весь код доступа к данным, чем изменить разбрызгивание LINQ to SQL по всей логике или области приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...