#xml #sql-server-2005 #orm #dataset #data-access-layer
#xml #sql-server-2005 #orm #набор данных #уровень доступа к данным
Вопрос:
Обычно мы пишем хранимые процедуры в базе данных, которая принимает xml и возвращает результирующий набор в виде xml. Я подумываю о предоставлении абстракции для вызовов базы данных, как показано ниже
Пример
public List<Person> GetAllPeople()
{
string requestXml = "<Request><Type>GetAllPeople</Type></Request>";
//execute a procedure with above xml as input
//load the response xml into dataset
//foreach record instantiate Person amp; add to list
return List<Person>();
}
чтобы команда могла работать со строго типизированными объектами, а не со слабо связанными строками Xml. Я думаю, что это та работа, которую ORM выполняет правильно? Или я должен закодировать свой собственный уровень доступа к данным, чтобы возвращать объекты, а не dataset и datatables. Итак, вопрос
- Подойдет ли ORM для такого типа доступа к данным?
- Каким будет правильный путь для абстрагирования вызовов базы данных?
Технические характеристики
SQL Server 2005, .NET 2.0, ASP.NET 2.0, C # 2.0
Ответ №1:
Определенно разработайте уровень доступа к данным. Этот уровень будет состоять из классов DAO, каждый класс для доступа к определенным типам данных (или объектов, если это OO-система).
Теперь вам решать, как вы хотите написать этот слой. У вас есть несколько вариантов:
- ORM.
- Обычный старый JDBC
- метод хранимой процедуры, о котором вы упомянули.
Если вы решите, что хотите использовать ORM, убедитесь, во что вы ввязываетесь. Создайте пару демонстрационных проектов, чтобы понять, как работает ORM.
Теперь я немного скептически отношусь к хранимым процедурам, главным образом потому, что могу выполнять все виды операций — как извлечение данных, так и выполнение логики. Я избегаю хранимых процедур, чтобы убедиться, что вся бизнес-логика присутствует в моем коде (будь то tjava, PHP или другой). Для относительно небольших систем я советую использовать простой уровень доступа к данным на основе SQL-запросов.