ASP.NET MVC&实体框架存储过程

时间:2017-03-27 23:27:14

标签: asp.net-mvc stored-procedures ef-database-first

我的ASP.NET MVC Web应用程序需要使用T-SQL存储过程从现有数据库中获取数据。我已经看过如何使用代码优先方法(基本上对于名为Product的模型,实体框架生成存储过程,如Product_UpdateProduct_Delete等)的教程。

但在我的情况下,我不能使用代码优先b / c数据库和存储过程已经存在,并且它们的名称不遵循此约定。怎么走?任何帮助将不胜感激。提前谢谢。

  • 开始编辑2017-03-28

如果我像Shyju和WillHua那样使用直接的ADO.NET类,我的Model数据类的数据注释是否有效?如果没有,还可以如何实施验证等?

如果我遵循这种方法,我是否需要在我的项目中引用实体框架?

  • 结束编辑2017-03-28

2 个答案:

答案 0 :(得分:0)

如果您使用的是Entity Framework,则可以执行类似以下操作:

        var startDateParam = new SqlParameter("StartDate", 8) { Value = startDate };
        var endDateParam = new SqlParameter("EndDate", 8) { Value = endDate };
        var parameters = new[] { startDateParam, endDateParam };

        var result= Context.Database.SqlQuery<CampaignReferralReportItem>("CampaignReferralReportItems @StartDate, @EndDate", parameters).ToList<CampaignReferralReportItem>();
        return result;

所以你在这里得到的是两个参数的声明,这两个参数被传递到存储过程'CampaignReferralReportItems'。查询完成后,结果将尽可能贴近CampaignReferralReportItem类。

请记住,属性的顺序必须与查询结果相同,否则映射可能会抛出异常。

值得注意的是,上面代码中描述的Context是您的DataContext。

此外,在你开始在任何地方抛出这种代码之前。看Repository pattern

可能是值得的

答案 1 :(得分:0)

我建议使用Dapper,我正在使用它,并且喜欢它的速度 - 或者Entity Framework, and 'Update model from Database' - so, a database first approach,其中提到了触发器的引用英寸

但是,我建议Dapper,因为它非常简单快捷。