0

我正在使用 Visual Studio 2012 创建一个 ASP.NET Web 应用程序。我尝试使用 ASP.NET 4.5 入门教程,但它创建了一个简单的本地数据库,并且所有查询都直接写在代码中。我正在访问的数据库 (SQL Server 2008) 有 15 个复杂的存储过程,我真的不想重新键入它们。

仅从表中获取所有数据时,使用DBContext教程中的示例可以正常工作,但是如何使用数据库中的存储过程?有人可以告诉我使用已经存在的存储过程的最佳方法吗?

到目前为止,我发现的所有问题(和答案)都是针对 Visual Studio 的早期版本,虽然我知道我可以使用这些(因为 VS 2012 确实支持向后兼容性),但我想充分利用我拥有但未使用 VS 2010 的“最佳实践”的软件。

如果您能告诉我如何使用现有的存储过程,或者甚至将我引向一本书、网站或任何其他可以向我展示这一点的东西,我将不胜感激!快乐编码!感谢您的宝贵时间!

4

2 回答 2

0

我不得不拼凑来自几个不同来源的信息,但我能够让它发挥作用。这是我的步骤(我可能做得比我需要的多,但它确实有效)以防万一它可以帮助其他人:

  1. 在我的项目中添加了一个名为 MyContext 的类,并告诉它是一个 DBContext 并将其指向我现有的数据库,如下所示:(请注意,我的 webconfig 文件中已经有完整的连接字符串。

    { public class MyContext : DbContext { public MyContext() : base("name=MyDatabase") { } } }

MyDatabase 被替换为在我的 webconfig 文件的连接字符串中引用我的数据库的实际名称。

  1. 我创建了一个名为 ProductList 的类,它只公开我的存储过程返回的字段:

    { public class ProductList { [ScaffoldColumn(false)] public int ProductID { get; 放; } [必需,StringLength(100),Display(Name = "Model")] public string ProductName { get; 放; } }

}

  1. 我实际上创建了一个用户控件 (.ascx),它只是一个 DataReapeater。在控件的代码隐藏中,就在 Page_Load 下方,我创建了一个名为 GetMostPopular 的方法:

    公共 IEnumerable GetMostPopular() { var db = new MyContext(); IEnumerable 结果 = db.Database.SqlQuery("MostPopularProducts"); 返回结果;}

IEnumerable 和 SQLQuery 的 <> 里面是我创建的类的名称。它与我的存储过程“MostPopularProducts”将返回的字段完全相同。

  1. 然后在 DataRepeater 中,我使用 GetMostPopular 作为“SelectMethod”:


    '><%# Eval("ProductName") %>

5.然后我只是将用户控件拖放到我希望它显示的页面上。

我希望这对其他人有帮助。快乐编码!

于 2012-12-09T15:14:05.743 回答
0

我建议你使用 SqlClient、SqlCommand、SqlConnection... 非常简单,具有有机输出!

于 2012-12-10T06:09:00.147 回答