ASP.NET MVC Управление подключением SQLC с помощью Dapper - PullRequest
7 голосов
/ 19 апреля 2011

Я быстро даю новый Dapper Micro ORM, выпущенный Stack Overflow / Sam Saffron, используя MVC.Мне интересно, как проще всего управлять объектом SQLConnection внутри моего контроллера?Я делаю что-то простое, как это, просто чтобы прокрутить некоторые данные и проверить Dapper, но разве это идея открывать / закрывать соединение, как это?

public class HomeController : Controller
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ajh"].ConnectionString);

    public HomeController()
    {
    }

    public ActionResult Index()
    {
        // get me all comments
        conn.Open();
        var comments = conn.ExecuteMapperQuery<Comment>("select * from Comment");
        conn.Close();

        return View(comments);
    }
}

Ответы [ 2 ]

9 голосов
/ 19 апреля 2011

Просто создайте, откройте и закройте соединение как можно локально:

public class HomeController : Controller
{
    public HomeController()
    {
    }

    public ActionResult Index()
    {
        List<Comment> comments;
        using (var conn = new SqlConnection(/* ... */))
        {
            conn.Open();
            comments = conn.ExecuteMapperQuery<Comment>("select * from Comment");
        }
        return View(comments);
    }
}

Хотя лучше избегать прямого доступа к данным в ваших контроллерах. Похороните ваши методы доступа к данным внутри класса CommentsService или аналогичного и вызовите его с вашего контроллера.

0 голосов
/ 19 апреля 2011

Я никогда не использовал его, но var comments откладывается при его выполнении, тогда у вас возникнет проблема, и вам придется использовать что-то вроде .ToList для полного перечисления результатов перед закрытием соединения. В противном случае, если .ExecuteMapperQuery полностью перечислит результаты, прежде чем их вернуть, все будет в порядке

...