Строго типизированный .net - ›доступ к данным sql?

Я знаю, что хочу, но не уверен в названии и необходимых инструментах, так что поехали ...

У меня есть несколько разных таблиц sql.

Мне нужен инструмент, который будет генерировать объект в моем проекте .net для каждой таблицы, причем каждый столбец является свойством этого объекта. (т.е. строго типизированный, без данных)

Я хочу иметь возможность вызывать методы select, insert, update и delete в моем проекте .net и, возможно, передавать объект (например, Person) моему методу insert (), который вставит его в таблицу sql.

Я не уверен, является ли это уровнем доступа к данным и объектно-реляционным отображением, или linq to sql, или мешаниной того и другого.

Любые советы приветствуются.


person maxp    schedule 18.10.2009    source источник


Ответы (3)


LINQ to SQL, nHibernate и любые другие ORM сделают все, что вам нужно. . Я считаю, что есть также LINQ to nHibernate, если вы хотите пойти по маршруту ORM. Лично я был в порядке только с LINQ to SQL, используя конструктор классов LINQ to SQL для создания своих сущностей. Я предпочитаю использовать методы расширения IQueryable, а не синтаксис LINQ, но это больше личное предпочтение. Однако вам нужно будет использовать методы контекста данных для вставки и удаления.

person tvanfosson    schedule 18.10.2009

Linq-to-SQL позволяет перетаскивать таблицы базы данных в проект в Visual Studio и создайте именно ту строго типизированную модель, которую вы ищете.

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

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

Самая сильная сторона NHibernate заключается в том, что он не требует соответствия 1: 1 между схемой вашей базы данных и вашей моделью предметной области - он отображает один класс на множество таблиц, несколько столбцов на отдельные сущности и так далее. Это чрезвычайно полезно, но очевидно, что за это приходится платить с точки зрения сложности, и похоже, что сейчас вы можете обойтись без этой дополнительной сложности.

person Dylan Beattie    schedule 18.10.2009

Вам нужна реализация шаблона Active Record.

Есть много ORM, которые предоставят вам эту реализацию, включая, но не ограничиваясь:

Чтобы выбрать ORM, вам следует взглянуть на этот другой вопрос, поскольку этот вопрос задавался и на него уже много раз отвечали:

NHibernate, Entity Framework, активные записи или linq2sql

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

person Michael Maddox    schedule 18.10.2009