Как передать нулевые параметры в тип запроса контекста в Entity Framework Core 2.1 - PullRequest
0 голосов
/ 28 августа 2018

Я работаю над Entity Framework Core 2.1 в приложении .NET Core. Я написал хранимую процедуру для получения списка претензий через Context Query-Type, который принимает три параметра, два из которых обнуляются Guid. Он работает нормально, поскольку нулевые параметры не передаются, но при передаче нулевых параметров выдается ошибка

https://docs.microsoft.com/en-us/ef/core/modeling/query-types

ошибка

The parameterized query '(@UserVal uniqueidentifier,@ClientVal nvarchar(4000),@Consultati' expects the parameter '@ClientVal', which was not supplied.

EF Тип запроса

public override IQueryable<GetSystemClaims> Execute()
{
  public Guid UserId { get; set; }
  public Guid? ClientId { get; set; }
  public Guid? ConsultationId { get; set; }


var userParam = new SqlParameter("@UserVal", UserId);
var clientParam = new SqlParameter("@ClientVal", ClientId);
var consultationParam = new SqlParameter("@ConsultationVal", ConsultationId);

        var userClaimsList = Context.Query<UserClaimsQueryView>().FromSql("EXECUTE dbo.ListUserClaims @userId=@UserVal, @clientId=@ClientVal, @consultationId=@ConsultationVal"
            , userParam, clientParam, consultationParam);

        return userClaimsList;
 }

1 Ответ

0 голосов
/ 29 августа 2018
  var userParam = new SqlParameter("@UserVal", UserId);

  var clientParam = new SqlParameter("@ClientVal", SqlDbType.UniqueIdentifier);
  clientParam.Value = (object)ClientId ?? DBNull.Value;

  var consultationParam = new SqlParameter("@ConsultationVal", SqlDbType.UniqueIdentifier);
  consultationParam.Value = (object)ConsultationId ?? DBNull.Value;

  var userClaimsList = Context.Query<UserClaimsQueryView>().FromSql("EXECUTE dbo.ListUserClaims @userId=@UserVal, @clientId=@ClientVal, @consultationId=@ConsultationVal"
            , userParam, clientParam, consultationParam);
...