【问题标题】:Replacing EF4.1 with ADO.net when calling stored proc in MVC3?在 MVC3 中调用存储过程时用 ADO.net 替换 EF4.1?
【发布时间】:2012-12-30 03:26:03
【问题描述】:

我需要用 ADO.NET 替换 EF4.1。我们应用程序中的数据仅由存储过程返回。我需要帮助重写如下调用(以便为应用程序编写 DAL):

EF调用存储过程:

using (var db = new NexGenContext())
{
   SqlParameter param = new SqlParameter("@ReviewID", Id);
   var issues = db.Database.SqlQuery<QuestionIssue>(
        "SP_GetQuestionIssues @ReviewID", param).ToList();

   return View(issues);
} 

ADO.NET 中的等价物是什么?从数据库中获取数据并映射到我的模型?

【问题讨论】:

    标签: asp.net-mvc-3 stored-procedures ado.net


    【解决方案1】:

    最接近 ADO.NET 的技术是数据集,而不是真正跨越界限的 ORM。数据集的行为与 ORM 非常相似,您可以直接从表中访问数据,而无需遍历游标。数据集直接返回列表,可以跟踪新数据和旧数据。

    这个链接是一个很好的概述: http://www.c-sharpcorner.com/UploadFile/718fc8/working-with-dataset-in-ado-net/

    这个MVC datasets with viewbags 堆栈线程专门使用模型中的数据集进行寻址。

    【讨论】:

    • 我猜你我可以这样做: public ActionResult Index() { var data = _repository.GetInvoicesDataSet();返回视图(数据); }
    • 但是,视图不需要模型吗?我在视图顶部声明什么?
    • 视图确实需要模型。通常使用“实体”作为模型。我发现这是一个好的开始,但也有局限性。在这种情况下,您将在 Models 文件夹的类库中声明一个模型。像 Public InvoicesModel{ IEnumberable InvoiceList}
    • 在您的操作方法中,您将实例化 InvoicesModel Model = new InvoicesModel(); InvoicesModel.InvoiceList = DS.Invoices([WhereClause]);
    • 感谢您的解释。
    猜你喜欢
    • 2018-10-13
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    相关资源
    最近更新 更多