exécuter une procédure stockée dans une entité Framework Core sans attendre une mappe vers un dbset

Je travaille sur .NET CORE, Entity Framework. J’ai une procédure stockée que je dois exécuter à partir de la classe .NET. Ma procédure stockée prend le numéro de ‘Contexte’ et je ne sais pas comment m’en occuper, même si j’ai DataView qui est la dernière exception.

Je blesse si je peux utiliser mon dataView au lieu de la classe context.dataModel, implémentation actuelle (Context.Claims.FromSql)

dataView

public class ClaimDataView { public Guid ClaimId { get; set; } public int IdNum { get; set; } public ssortingng Value { get; set; } public DateTime ExpirationDate { get; set; } public ClaimAtsortingbutionActions Action { get; set; } public bool ActiveStateForRole { get; set; } } 

appel de procédure stockée

 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", ConsultationId); var consultationParam = new SqlParameter("@ConsultationVal", ConsultationId); //**************need help in following line var query = Context.Claims.FromSql("EXECUTE dbo.ListUserClaims @userId=@UserVal, @clientId=@ClientVal, @consultationId=@ConsultationVal" , userParam, clientParam, consultationParam); 

nouvelle mise à jour

moduleContext Class

  protected override void OnModelCreating(ModelBuilder modelBuilder) { //other models.... modelBuilder.Query(); } 

Procédure stockée exécutée à partir de

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

Erreur

 System.InvalidOperationException: Cannot create a DbSet for 'UserDataView' because this type is not included in the model for the context. at Microsoft.EntityFrameworkCore.Internal.InternalDbQuery`1.get_EntityType() 

Vous pouvez utiliser les types de requête introduits dans EF Core 2.1.

Vous devez d’abord enregistrer votre classe en tant que type de requête:

 modelBuilder.Query(); 

Ensuite, vous pouvez utiliser Context.Query() à la place de votre Context.Claims actuel:

 var query = Context.Query().FromSql(…); 

Si vous n’êtes pas sur la version 2.1, vous devrez append:

 public DbSet ClaimDataView { get; set; } 

à votre moduleContext. Et ajoutez NotMapped à votre classe:

 [NotMapped] public class ClaimDataView