У меня есть табличная функция на SQL Server
CREATE FUNCTION [dbo].[FStatusDepo]
(
@ProvozID int, @ZonaID int NULL, @minutesWarning int
)
RETURNS TABLE
AS
RETURN
(
SELECT
q.[DepoID]
,SUM(CASE WHEN v.Vjezd IS NOT NULL AND datediff(mi, v.Vjezd, GETDATE())>@minutesWarning THEN 1 ELSE 0 END) AS VjezduPoLhute
,SUM(CASE WHEN v.Vjezd IS NOT NULL AND datediff(mi, v.Vjezd, GETDATE())<=@minutesWarning THEN 1 ELSE 0 END) AS VjezduVLhute
FROM
...
У меня новый проект с ASP.NET Core 2.1 и EF Core 2.1.
Я прочитал , что я могу определить новый тип Query
в DbContext:
public class StatusDepo
{
public int DepoID { get; set; }
public int VjezduPoLhute { get; set; }
public int VjezduVLhute { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Query<StatusDepo>().ToView("FStatusDepo");
Когда я смотрю на пример:
https://github.com/aspnet/EntityFrameworkCore/blob/dev/samples/QueryTypes/Program.cs
Я вижу, что мне, вероятно, также следует добавить эту строку в DbContext:
public DbQuery<StatusDepo> StatusDepos { get; set; }
Тогда я могу выполнить:
using (DixieContext db = new DixieContext())
{
var listStatusDepo =
db.StatusDepos.FromSql("SELECT * FROM [dbo].[FStatusDepo] (1, 1, 20)").ToList();
}
Это работает нормально, но строка:
modelBuilder.Query<StatusDepo>().ToView("FStatusDepo")
вообще не имеет смысла, есть ли другая конструкция для параметризованных представлений или я должен просто удалить строку и использовать только FromSql?