C # класс из таблицы базы данных SQL - PullRequest
4 голосов
/ 21 октября 2008

наткнулся на это:

http://www.eggheadcafe.com/articles/adonet_source_code_generator.asp

И мне интересно, является ли это правильным решением, поскольку я не настолько большой поклонник создания класса для каждой хранимой процедуры или я использую Enterprise Library для проекта ASP.net 2.0.

Ответы [ 4 ]

6 голосов
/ 21 октября 2008

Вы определенно не должны создавать класс для каждой хранимой процедуры. Существует несколько подходов, которые вы можете использовать для обработки взаимодействий с базой данных. Вам следует внимательно изучить основные рамки и решить, какая из них вам больше подходит. Решение Castle Project великолепно и опирается на nHibernate ( nHibernate ). LINQ - это аналогичное предложение от Mircrosoft ( LINQ Project ). Оба эти решения являются полноценными средами ORM (Object Relational Mapping) и будут генерировать динамический SQL для сохранения ваших объектов в базе данных. Каждый из них также имеет свои особенности и любит, чтобы вы структурировали свои объекты особым образом. Если вы не хотите управлять SQL, который использует ваша система, я определенно рекомендую один из этих подходов.

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

0 голосов
/ 21 октября 2008

Вам нужно будет определить, в какой момент вам нужны наборы данных, составленные из ваших таблиц, и хотите ли вы, чтобы SQL создавал их с помощью хранимых процедур, или будет ли обрабатывать их уровень бизнес-логики. Как говорит Dr8k, nHibernate создаст для вас SQL, но с nHibernate есть кривая обучения. ORM будет контролировать то, как вы получаете данные, и в зависимости от вашей среды и уровня комфорта администратора базы данных вы можете решить другие проблемы.

Если вам удобнее работать с SQL, то есть еще один инструмент под названием SubSonic , который создаст для вас оболочки Active Record и предложит вам также использовать хранимые процедуры. Существует также хороший инструмент запросов с удобным интерфейсом, который вы можете использовать, если не можете использовать LINQ.

0 голосов
/ 21 октября 2008

Есть много способов обернуть таблицу базы данных в класс C #; Возможно, вы захотите изучить несколько альтернатив, прежде чем выбирать между тем, с которым вы связались, и Entity Framework.

Существует программный шаблон, называемый «шаблон активной записи», который описывает именно этот подход - один класс C # для каждой таблицы с такими методами загрузки / сохранения, как Customer.GetById (), Customer.Save () и т. Д.

Для ASP.NET 2.0, проверьте реализацию ActiveRecord Castle Project и сторонний инструмент-плагин Visual Studio под названием ActiveWriter , который позволяет создавать оболочки классов для ваших таблиц, используя интерфейс drag'n'drop.

0 голосов
/ 21 октября 2008

Есть ли возможность обновления до фреймворка 3.5? Если это так, взгляните на LINQ to SQL и Entity Framework, так как это многого за вас выполнит.

Если нет, то, пока он генерирует стандартный код, который не привязывает вас к сторонним библиотекам, то вы наверняка можете его использовать. На моем рабочем месте у нас есть собственный генератор, похожий на этот, и он работает хорошо, хотя вскоре мы перейдем к LINQ to SQL.

...