2009-05-06 1 views
2

Моя проблема заключается в следующем:Как создать LINQ To SQL datacontext для большой базы данных с использованием SQLMetal, когда он создает файл DataContext.cs размером 12 МБ?

У нас есть очень большая DB Legacy с множеством SPROCs, Просмотров & Таблицы.

Дизайнер - «НЕТ GO» b/c размера.

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

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

Но поскольку он работает в настоящее время, я нахожусь.

Идеи ??

ответ

1

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

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

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

+0

Это хорошая идея. Благодарю. – Sumtraveller

+0

Я сделал это ... Создание небольшого файла сценария не является разумным. Кроме того, существуют некоторые тривиальные, но болезненные различия между SQL Designer & SQL Metal ( see this blog entry) – Sumtraveller

0

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

1

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

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 неделю исследования (где мне не удалось найти плинку). Простые решения не представились. Я потратил 1,5 недели на создание инструмента (DBMLGod) и еще одну неделю для рефакторинга/компиляции кода, учитывая различия между SQLMetal и SQLDesigner). Время тестирования - TBD ...

Если у вас есть NOT, у вас есть большая база кода, которая была построена с использованием SQL Designer, у вас, вероятно, не будет столько проблем.

Я думаю, что все большие неиспользуемые базы данных (используйте множество сложных sprocs & есть много объектов) будет болезненным.

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

0

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

Вы можете разделить DataContext в отдельные файлы классов в шаблоне .TT, в самом деле, как вам это нравится, это дает широкие возможности для расширения кода и имеет которая должна соответствовать основным потребностям.

С уважением