Создание моделей в ASP.NET MVC - PullRequest
8 голосов
/ 11 мая 2009

Я только начинаю проект в ASP.Net MVC с LINQ to Entities, и мне было интересно, есть ли хороший, чистый способ определения моделей, который создает для меня соответствующие таблицы в базе данных. Я больше всего знаком с Django (с точки зрения фреймворков MVC) и ищу .Net-эквивалент models.py, чтобы иметь все версии. Есть идеи? Было бы еще лучше, если бы у него была какая-то форма миграции схемы, эволюция Джанго и т. П.

Ответы [ 3 ]

6 голосов
/ 13 мая 2009

Я думаю, что вы хотите сделать, это перевернуть вопрос. Объекты могут автоматически генерироваться из базы данных, поэтому проблема заключается в использовании механизма .NET для поддержки схемы базы данных. Поскольку вы не используете NHibernate, который требуется этим другим решениям, я бы предложил использовать MigratorDotNet . MigratorDotNet использует ту же идею, что и миграции Ruby on Rails:

  1. Ваша база данных отслеживает его версию
  2. Каждый раз, когда вы хотите изменить схему, вы пишете небольшой класс для обработки обновления (и, возможно, понижения)
  3. Назначьте этим классам порядок выполнения
  4. Если база данных никогда не обновляется, просто выполните методы обновления классов в порядке

Поскольку вы будете восстанавливать свои сущности только во время компиляции, я бы порекомендовал запустить сценарии миграции, а затем восстановить ваши сущности, как часть процесса сборки. MigratorDotNet уже поставляется с MSBuildTarget , добавление которого потребует всего пару кликов.

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

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

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

Активная запись Castle Project - хороший способ сделать это.

If предлагает возможности, аналогичные ruby ​​на активной записи рельсов.

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