Comment exécuter une requête SQL dynamique dans Entity Framework 7 qui mappe automatiquement à des entités (SqlQuery )?

asp.net-core-mvc entity-framework entity-framework-core

Question

J'ai une application existante que j'essaie de mettre à niveau de MVC5 / EF6 à MVC6 / EF7. Nous créons de manière dynamique certaines de nos tables SQL et, par conséquent, avons utilisé le

System.Data.Entity.Database.SqlQuery

méthode pour mapper automatiquement les entités que nous utilisons tout au long de notre application.

Cette méthode semble avoir disparu (c'est-à-dire qu'elle ne fait pas partie de Microsoft.Data.Entity.Infrastructure.Database) dans EF7 (ou n'est pas encore implémentée). Est-il prévu de ré-implémenter cette méthode dans EF7 ou existe-t-il un autre moyen d'y parvenir? Notre projet est en quelque sorte mort dans l’eau jusqu’à ce que nous trouvions la solution.

Édité le 20 mai 2015

J'ai essayé de faire fonctionner cela avec FromSql, car c'est ce qui est disponible dans Beta4, mais quelle que soit la combinaison de chaîne concaténée, les paramètres que j'essaye, je continue à recevoir différentes versions d'un message "Syntaxe incorrecte près de @xxxvariable".

var results = Set<AssessmentResult>().FromSql("dbo.GetAssessmentResults @FieldA='Data1', @FieldB='Data2', @UserId = 2303"); 
var results2 = Set<AssessmentResult>().FromSql("dbo.GetAssessmentResults @FieldA= {0}", intData); 

Ces deux appels ont pour résultat

"Incorrect syntax near '@FieldA'" 

Des idées?

Réponse populaire

Nous avons récemment introduit la méthode d'extension .FromSql() sur DbSet . Cela présente l'avantage supplémentaire de pouvoir continuer à composer LINQ.

var customers = db.Customers
    .FromSql("SELECT * FROM Customer")
    .Where(c => c.Name.StartsWith("A"));


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi