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)
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; } }
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);
protected override void OnModelCreating(ModelBuilder modelBuilder) { //other models.... modelBuilder.Query(); }
var query = Context.Query().FromSql("EXECUTE dbo.ListUserClaims @userId=@UserVal, @clientId=@ClientVal, @consultationId=@ConsultationVal" , userParam, clientParam, consultationParam);
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