Я пытаюсь создать контроллер веб-API, который будет вызывать хранимую процедуру на SQL сервере.
Я создал новую хранимую процедуру в базе данных и добавил ее в Обозреватель моделей под Function Imports
в модели и .Store
-> Stored Procedures / Functions
.
Я вижу в .edmx
файле мой класс.
public partial class CurrentCall
{
public int call_id { get; set; }
public int city { get; set; }
public System.DateTime call_received { get; set; }
public Nullable<System.DateTime> call_transfer { get; set; }
public Nullable<System.DateTime> call_response { get; set; }
public Nullable<System.DateTime> call_depart { get; set; }
public Nullable<System.DateTime> call_arrive { get; set; }
public Nullable<System.DateTime> call_return { get; set; }
public Nullable<System.DateTime> call_end { get; set; }
public string priorityName { get; set; }
public string Call_Status { get; set; }
public string station_name { get; set; }
public string city_name { get; set; }
public string protocolName { get; set; }
}
В обозревателе решений я не могу получить и увидеть поля CurrentCall
Функция, как для Driver
Таблица.
Более того, в файле .Context.cs
я получаю ошибку в следующем коде в <Currentcall>
, что
CS0246 C# Не удалось найти тип или имя пространства имен (вы отсутствует директива using или ссылка на сборку?)
Код:
public virtual ObjectResult<CurrentCall> current_call(Nullable<int> call_id)
{
var call_idParameter = call_id.HasValue ?
new ObjectParameter("call_id", call_id) :
new ObjectParameter("call_id", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<CurrentCall>("current_call", call_idParameter);
}
Это мой stored-procedure
:
CREATE PROCEDURE [dbo].[current_call]
-- Add the parameters for the stored procedure here
@call_id int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT dbo.Call.call_id, dbo.Call.city, dbo.Call.call_received, dbo.Call.call_transfer, dbo.Call.call_response, dbo.Call.call_depart, dbo.Call.call_arrive, dbo.Call.call_return, dbo.Call.call_end, dbo.Priority.name AS priorityName, dbo.Call_Status.name as Call_Status,
dbo.Station.station_name, dbo.City.city_name, dbo.Protocol.name AS protocolName
FROM dbo.City INNER JOIN
dbo.Call INNER JOIN
dbo.Priority ON dbo.Call.priority = dbo.Priority.priority_id ON dbo.City.city_id = dbo.Call.city INNER JOIN
dbo.Protocol ON dbo.Call.protocol_category = dbo.Protocol.id LEFT OUTER JOIN
dbo.Station INNER JOIN
dbo.Ambulance ON dbo.Station.station_id = dbo.Ambulance.ambulance_station ON dbo.Call.amb_id = dbo.Ambulance.ambulance_id
INNER JOIN
dbo.Call_Status ON dbo.Call.call_status = dbo.Call_Status.call_status_id
WHERE dbo.Call.call_id=@call_id;
END
GO