Как создать текст данных LINQ To SQL для большой БД, используя SQLMetal, когда он генерирует файл DataContext.cs размером 12 МБ?
Моя проблема заключается в следующем:
У нас очень большая БД Legacy с множеством SPROC, Views & Tables.
Проектировщик - "НЕТ ИДЕТ" b/c размера.
Я настроил SQL Metal для построения контекста данных, но полученный файл кода настолько большой (12 МБ), что Visual Studio 2008 не откроет его.
Если бы SQLMetal генерировал новый файл для каждого типа класса (Table, View, SPROC_Result), я был бы в порядке.
Но поскольку это работает в настоящее время, я накрылся.
Идеи??
4 ответа
Вы могли бы сделать это:
- Запустите SQLMetal.exe, чтобы создать файл.dbml.
- Создайте небольшой скрипт или приложение для анализа файла.dbml (который является XML) на 3 компонента: таблицы, хранимые процедуры и представления
- Запустите SQLMetal.exe для каждого из новых файлов.dbml, чтобы создать 3 отдельных файла.cs.
На этапе фильтрации (шаг 2) вы также можете создавать другие произвольные подразделения вашего файла.dbml на основе других требований. Возможно, отфильтруйте некоторые ненужные таблицы или представления. Или разбейте таблицы на логические компоненты с отдельными DataContexts.
Оказывается, есть несколько способов сделать это:
1) Создайте свой собственный (1 неделя для меня: Бог DBML) http://southernbits.com/index.php/2009/05/16/dbml-hell-legacy-db-sqlmetal-is-painful-when-migrating-from-sql-designer/
2) Используйте существующий инструмент (это может работать, но я еще не полностью изучил) http://www.plinqo.com/
3) Остерегайтесь различий между SQLMetal и SQL Designer. Смотрите блог: http://southernbits.com/index.php/2009/05/25/unfortunate-differences-between-linq-sqlmetal-and-sqldesigner/
В конце концов, это заняло у меня 1 неделю исследования (где мне не удалось обнаружить plinqo). Простые решения не представились. Мне потребовалось 1,5 недели на создание инструмента (DBMLGod) и еще 1 неделю на рефакторинг / компиляцию кода с учетом различий между SQLMetal и SQLDesigner). Время тестирования TBD...
Если у вас нет большой базы кода, созданной с использованием SQL Designer, у вас, вероятно, не будет столько проблем.
Я думаю, что все большие, неопрятные базы данных (используют много сложных sprocs и имеют много объектов) будет болезненным.
Время генерации SQLG для наших баз данных составляло 15 минут на блоках разработки QuadCore 4GB (ай).
Мы используем http://t4-editor.tangible-engineering.com/T4-Editor-Visual-T4-Editing.html
Затем вы можете разбить текст данных на отдельные файлы классов в шаблоне.tt. На самом деле, как вам это нравится, он дает широкие возможности для расширения кода и имеет бесплатную версию, которая должна соответствовать основным потребностям.
С уважением
Просто определил, что Resharper вылетал VisualStudio в очень большом файле DataContext.cs. Но предложение Keltex очень хорошее.