Стратегия проектирования БД в Visual Studio - PullRequest
2 голосов
/ 11 сентября 2010

В настоящее время я изучаю ASP.NET MVC 2 и LINQ to SQL. Все выглядит довольно круто. Но у меня есть несколько проблем с жизненным циклом приложений и разработки.

В настоящее время я проектирую БД в SqlServer Management Studio. Затем я обновляю свои файлы DBML, удаляя и повторно импортируя измененные таблицы.

Вопросы:

  1. Я не могу найти, как просто обновить всю схему DBML.
  2. Мой DBML затем теряет некоторые из внесенных мною изменений, таких как переименование членов отношения или сопоставление некоторого int с перечислением.
  3. Если я хочу, чтобы сценарий SQL развертывал мою БД (или содержал схему под контролем исходного кода), мне нужно воспользоваться мастером SSMS 'Genererate Script', который был бы хорош, если бы а) он мог запомнить мои настройки и ) это может быть автоматизировано.

Должен ли я работать наоборот (начать с моего DBML и сгенерировать БД)? Должен ли я перейти на какой-то другой фреймворк (NHibernate? Могу ли я использовать с ним какой-нибудь вкус Linq?)

Кроме того, я читал, что LINQ2SQL уже устарел в пользу Linq to Entities. Означает ли это, что основной инструмент, который должен сделать мою жизнь намного лучше, снова заставит меня терять время в долгосрочной перспективе?

Спасибо, что пролил немного света.

Ответы [ 4 ]

2 голосов
/ 11 сентября 2010

Если вы запускаете свою схему БД с нуля, вы можете рассмотреть " Разработка с использованием кода с Entity Framework 4" , как обрисовано в общих чертах Скотту.

Я использовал это на новомпроект, и я нахожу его чрезвычайно полезным - особенно для тестирования.

Я начал с простых классов POCO, представляющих мои данные, затем, по мере развития проекта, я позволил бы EF4 сгенерировать схему в «настоящую» БД с использованием моего ».пример данных в памяти ... теперь я использую смесь как POCO в памяти (для разработки и TDD), так и автоматически сгенерированной схемы БД (автоматически загружаемой с более "реалистичными" данными) для демонстраций и т. д ... так чтодалеко я очень счастлив.

0 голосов
/ 27 января 2011

В качестве продолжения, я просто хотел сказать, что в конце концов нашел и влюбился в Huagati DBML / EDMX Tools .

Чтобы быть полностью честным, я должен сказать, чтоцена значительно увеличилась с тех пор, как я его приобрел.Я считаю, что это все равно стоит денег.

И для людей, которые ищут такой же инструмент для MySQL (или другого), DevArt - ваш друг.

0 голосов
/ 14 сентября 2010

Вы можете попробовать CodeSmith / PLINQO для автоматической синхронизации БД / кода: http://plinqo.com/

0 голосов
/ 12 сентября 2010

Существует много мнений по поводу LINQ2SQL и того, является ли он «устаревшим» или «прекращенным».Но он все еще находится в среде .NET и является хорошим инструментом, поэтому, если он соответствует вашим потребностям, вы должны его использовать.Откровенно говоря, Entity Framework все еще не совершенен, и если вам не нужна дополнительная гибкость, которую он предоставляет, то это не стоит боли.Если бы у меня был небольшой проект среднего размера, то я бы определенно использовал LINQ2SQL снова (и поверх EF).

Что касается вашего вопроса, да, вы потеряете любые имена или сопоставления различных типов при удалении и повторном добавлении таблицы.Мне известны следующие варианты:

  1. Только удалить / повторно добавить измененную таблицу (не все таблицы)
  2. Попробуйте изменить таблицы DBML, а неудалить / повторно добавить.Вы можете добавлять и удалять столбцы, изменять имена столбцов и типы данных, добавлять все связи в DBML.

Мне нравится предложение JcMalta создавать объекты как классы перед рендерингом в базу данных, но если вы найдете SQLСтудия, с которой можно быстро разрабатывать, тогда может быть просто быстрее создавать таблицы, где их можно поместить в ваш DBML.Прикосновение раздражает необходимость что-то менять в базе данных и вносить изменения в ваш код, но инструменты генерации кода довольно хороши и снимают большую часть боли.

...