我是EF和MVC的新手。但我设法用MCV5和视图创建脚手架页面。 我知道webforms和EF之间的概念存在差异。但是我可以执行在SSMS中创建的存储过程。 我希望能够拥有一个带有两个文本框的网页,这两个文本框包含存储过程所需的两个参数,两个参数都是字符串,然后在webgrid中显示结果。 这首先是EF代码和MVC吗?
我的存储过程的代码是:
CREATE PROCEDURE [dbo].[sp_FindRoutes]
@DepCity nvarchar(max),
@ArvCity nvarchar(max)
AS
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT dbo.Airlines.AirlineName, dbo.Routes.DepCity, dbo.Routes.ArvCity, dbo.Routes.FlightNr, dbo.AirlineRoutes.Fare, dbo.AirlineRoutes.AircraftAllocated
FROM dbo.Routes INNER JOIN
dbo.AirlineRoutes ON dbo.Routes.RouteId = dbo.AirlineRoutes.RouteId INNER JOIN
dbo.Airlines ON dbo.AirlineRoutes.AirlineId = dbo.Airlines.AirlineId
WHERE dbo.Routes.DepCity LIKE @DepCity AND dbo.Routes.ArvCity LIKE @ArvCity;
GO
答案 0 :(得分:0)
假设您的SP
是这样的(只是您SP
的简单版本)。
CREATE PROCEDURE [dbo].[sp_FindRoutes]
@DepCity string
AS
BEGIN
SET NOCOUNT ON;
SELECT dbo.Airlines.AirlineName, dbo.Routes.DepCity, dbo.Routes.ArvCity
FROM dbo.Routes
WHERE dbo.Routes.DepCity= @DepCity
END
您必须创建一个与存储过程返回的结果具有相同属性名称的对象。就像这样。
public class RouteForAirline
{
public string AirlineName { get; set; }
public string DepCity { get; set; }
public string ArvCity { get; set; }
}
然后按下图所示拨打SP
。
注意:如果您可以访问class file
,则可以将其放在DatabaseContext()
上。
using(var context = new DatabaseContext())
{
var depCityParameter = new SqlParameter("@DepCity", "colombo");
var arvCityParameter = new SqlParameter("@ArvCity", "matara");
var results = context.Database.SqlQuery<RouteForAirline>("sp_FindRoutes @DepCity, @ArvCity",depCityParameter,arvCityParameter).ToList();
}
您可以使用以下链接了解更多相关信息。