Легко создавать таблицы базы данных из логической модели в .NET и VS - PullRequest
4 голосов
/ 11 марта 2011

Справочная информация:

Я начал создавать логическую модель базы данных для веб-сайта ASP.NET MVC. Я использовал визуальный дизайнер для Entity Framework, который поставляется с VS, потому что я использовал его раньше.

Но теперь у меня уже есть 33 класса, и я еще не закончил (включая довольно много наследства и много ассоциаций). Я боюсь, что было бы слишком сложно и потребовало бы много времени, чтобы вручную установить все отображения таблиц, а затем генерировать таблицы базы данных. У меня нет опыта в этом - я сделал это по-другому: классы из таблиц базы данных, и мне потребовалось много времени, чтобы заставить его работать в меньшем проекте.

Вопрос:

Как я могу легко и быстро создавать таблицы базы данных для логической модели (диаграммы классов) в .NET / VS? Было бы здорово, если бы это было возможно автоматически. Я никогда не работал с визуальным конструктором LinqToSQL, и в Интернете, похоже, нет ссылок на то, как создавать таблицы базы данных из классов LinqToSQL. Это вообще возможно ? Если нет, то есть ли способ автоматически создавать таблицы базы данных с помощью Entity Framework - без необходимости указывать сопоставления таблиц?

И еще один вопрос: если я буду использовать классы LinqToSQL, будут ли фиксировать изменения в базе данных каждый раз, когда я изменяю свойства? Или там происходит какое-то кеширование?

Ответы [ 3 ]

5 голосов
/ 11 марта 2011

Платформа сущностей имеет концепцию «Model First», которая генерирует модель базы данных из вашей модели, отсюда и название.

Вы можете прочитать об этом здесь: http://msdn.microsoft.com/en-us/data/ff830362

Однако, мой личный фаворит, когда дело доходит до Object Relational Mappers - это NHibernate с добавлением Fluent NHibernate. У них есть концепция, в которой вы работаете не с моделью данных, а с вашей моделью предметной области, а для управления сопоставлениями вы используете соглашения. Это довольно опрятно. Вы можете начать с некоторых довольно хороших примеров, посмотрев этот код здесь: https://github.com/sharparchitecture/Northwind/tree/master/app

Linq2Sql слишком ограничен для случая, о котором вы говорите. И у него нет возможности генерировать модели данных из кода. Фактически, Linq2Sql работает наоборот - он генерирует набор классов из вашей модели данных, во многом как и Entity Framework.

Ни Linq 2 SQL, ни Entity Framework ничего не фиксируют, пока вы явно не решите это сделать. У них обоих есть понятие контекста объекта, который отслеживает все сделанные изменения. Когда вы вызываете «Сохранить», они преобразуют эти изменения в SQL, который затем выполняется в базе данных.

1 голос
/ 11 марта 2011

Как и MikeEast, у меня был очень хороший опыт работы с Fluent NHibernate.

В моем проекте я использую функцию Automapping, которая позволяет мне изменять свою модель данных почти по желанию, и схему базы данныхобновляется автоматически

0 голосов
/ 19 марта 2011

Наконец, я остановился на Entity Framework - генерация таблиц становится совершенно бесполезной, когда я узнал, как работать с соединениями с базой данных ...

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