Будет ли ORM соответствовать моей цели

#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-система).

Теперь вам решать, как вы хотите написать этот слой. У вас есть несколько вариантов:

  1. ORM.
  2. Обычный старый JDBC
  3. метод хранимой процедуры, о котором вы упомянули.

Если вы решите, что хотите использовать ORM, убедитесь, во что вы ввязываетесь. Создайте пару демонстрационных проектов, чтобы понять, как работает ORM.

Теперь я немного скептически отношусь к хранимым процедурам, главным образом потому, что могу выполнять все виды операций — как извлечение данных, так и выполнение логики. Я избегаю хранимых процедур, чтобы убедиться, что вся бизнес-логика присутствует в моем коде (будь то tjava, PHP или другой). Для относительно небольших систем я советую использовать простой уровень доступа к данным на основе SQL-запросов.