ASP.NET MVC3: метод многократного использования, который возвращает результаты запроса базы данных - PullRequest
2 голосов
/ 12 декабря 2011

Я хочу метод, который я могу вызвать, который будет запрашивать базу данных для моей заданной строки запроса.На которые можно ссылаться из разных контроллеров / действий.(обратите внимание, сложность фактического запроса довольно большая).

Итак, несколько вопросов:

  1. Куда пойдет код.Новый контроллер?Помощник?
  2. Как бы я сослался на него (назову его)?
  3. Какой объект, если следовать моему текущему стилю, будет возвращаемым типом.

    public Something WebCostCentres()
    {
        using (var db = Database.OpenConnectionString(Mynamespace.Properties.Settings.Default.dbConnString, 
                               "System.Data.SqlClient"))
        {
            //ViewBag.CostCentres = db.Query("SELECT DISTINCT CostCentreNo");
            return db.Query("SELECT DISTINCT CostCentreNo");
        }
    }
    

Ответы [ 3 ]

2 голосов
/ 12 декабря 2011

1. Куда пойдет код. Новый контроллер? Helper

класс. Сервис-ориентированная архитектура.

2.Как я назову это (назову)?

Как локальная переменная на странице, заполненная через ваш доверенный контейнер IOC.

3. Какой объект, если следовать моему текущему стилю, будет возвращаемым типом

Отсутствует. Наш текущий стиль устарел. Вы когда-нибудь слышали о LINQ? IQueryable расширения для .NET? Это не так, как они новые. Он должен возвращать либо IEnumerable, либо IQueryable и быть в общем случае универсальным. Или конкретный тип, если возвращается только одно число.

2 голосов
/ 12 декабря 2011

шаблон репозитория также применим

см. Пример http://mstecharchitect.blogspot.com/2009/08/aspnet-mvc-and-linq-to-sql-using.html

2 голосов
/ 12 декабря 2011
  1. Я бы создал для этого какой-нибудь класс Service.
  2. Вы создаете услугу и вызываете метод.
  3. Тот же тип, что и ваш метод запроса. IEnumerable будет вариант. Возможно, вам придется вызвать ToList или ToArray для выполнения запроса, потому что соединение может быть закрыто.

Сервисный уровень часто называют хранилищем. Google для этого, и вы найдете тонны примеров.

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