Как получить данные из хранимой процедуры сервера ComplexType Sql внутри проекта C #, созданного с помощью EntityFramework - PullRequest
0 голосов
/ 03 июня 2019

Я написал хранимую процедуру SQL Server, которая возвращает данные с помощью внутреннего объединения нескольких таблиц. Это означает, что он не возвращает какой-либо конкретной сущности.

Вот моя процедура:

CREATE proc usp_viewlog_query

as
SET FMTONLY OFF

declare @start_date datetime
set @start_date = DATEADD(day, -30, GETDATE())

select distinct v.VehilceId, v.Year, vs.StatusName, vp.PhotoName,
sp.StateName, v.Price, v.ManufacturerId, v.Model, v.UrlAlias into #t from Vehicle v
inner join (
    select distinct  top 10 VehicleId, ViewedOn from ViewLog where ViewedOn >= @start_date --order by ViewedOn desc
) vl on v.VehilceId = vl.VehicleId
inner join StateParish sp on v.StateCode = sp.StateCode
inner join VehiclePosition vs on v.StatusCode = vs.StatusCode
left join (select top 1 vehicleid, photoname from VehiclePhoto) vp on v.VehilceId = vp.VehicleId

update #t set PhotoName = (select top 1 photoname from VehiclePhoto where VehicleId = #t.VehilceId)

select
VehilceId as VehicleId, [year], StatusName, 
PhotoName, StateName, Price, ManufacturerId,
Model, UrlAlias
from #t
drop table #t

Я добавил описанную выше процедуру, используя Update Model From Database, а затем импортировал функцию как ComplexType.

Но как я могу получить записи сверху dataset в мой проект и получить к нему доступ? Некоторое время я искал, но все, что я получаю, это как импортировать процедуру, которую я уже сделал.

Я не знаю кода для доступа к вышеуказанной функции и получения данных внутри моего проекта.

1 Ответ

0 голосов
/ 03 июня 2019

Сначала создайте тип с такими же именами свойств, что и имена столбцов вашей процедуры, например: -

public class MyComplexType
{
    public int VehilceId { get; set; }
    public string StatusName { get; set; }
    public string PhotoName { get; set; }
    //other properties
}

, затем позвоните в ваш прок: -

using(var context = new DatabaseContext())
{
    var result = context.Database.SqlQuery<MyComplexType>("usp_viewlog_query").ToList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...