Как создать текст данных LINQ To SQL для большой БД, используя SQLMetal, когда он генерирует файл DataContext.cs размером 12 МБ? - PullRequest
2 голосов
/ 07 мая 2009

Моя проблема заключается в следующем:

У нас очень большая устаревшая БД с множеством SPROC, представлений и таблиц.

Дизайнер представляет собой "НЕТ ГОЙ" б / к размера.

Я настроил SQL Metal для создания контекста данных, но полученный файл кода настолько большой (12 МБ), что Visual Studio 2008 не откроет его.

Если бы SQLMetal генерировал новый файл для каждого типа класса (Table, View, SPROC_Result), я был бы в порядке.

Но, как это работает в настоящее время, я накрылся.

Идеи ??

Ответы [ 4 ]

1 голос
/ 25 мая 2009

Оказывается, есть несколько способов сделать это:

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 и имеющие много объектов) будут болезненными.

Время SQLGeneration для наших баз данных составляло 15 минут на блоках разработки QuadCore 4 Гб (ух).

1 голос
/ 07 мая 2009

Вы можете сделать это:

  1. Запустите SQLMetal.exe, чтобы создать файл .dbml.
  2. Создайте небольшой скрипт или приложение для анализа файла .dbml (который является XML) на 3 компонента: таблицы, хранимые процедуры и представления
  3. Запустите SQLMetal.exe для каждого из новых файлов .dbml, чтобы создать 3 отдельных файла .cs.

На этапе фильтрации (шаг 2) вы также можете создавать другие произвольные подразделения вашего файла .dbml на основе других требований. Возможно, отфильтруйте некоторые ненужные таблицы или представления. Или разбейте таблицы на логические компоненты с отдельными DataContexts.

0 голосов
/ 09 апреля 2011

Мы используем http://t4 -editor.tangible-engineering.com / T4-Editor-Visual-T4-Editing.html

Затем вы можете разбить текст данных на отдельные файлы классов в шаблоне .tt. На самом деле, как вам угодно, он дает широкие возможности для расширения кода и имеет бесплатную версию, которая должна соответствовать основным потребностям.

Привет

0 голосов
/ 07 мая 2009

Только что определил, что Resharper аварийно завершал работу VisualStudio в очень большом файле DataContext.cs. Но предложение Keltex очень хорошее.

...