SULLAGES POUR LES QUESTIONS SQL RAWES SANS DBSETS Dans l'entité Framework Core
Entity Framework La suppression de Core de dbData.Database.SqlQuery<somemodel>
présente un défi lors de l'exécution de requêtes SQL brutes qui renvoient des entités non cartographiées, en particulier pour les tâches telles que les recherches en texte intégral avec le classement. Voici comment surmonter cette limitation:
EF Core 8 et plus tard:
La solution la plus simple dans les versions EF Core 8 et ultérieures est d'utiliser directement SqlQuery
. Il prend désormais en charge le retour des types arbitraires, éliminant le besoin d'entités sans clé dans de nombreux cas.
EF Core 3.0 et supérieur:
L'approche recommandée pour EF Core 3.0 et ultérieurement consiste à utiliser Types d'entités sans clé :
[Keyless]
ou de l'API Fluent .HasNoKey()
. FromSqlRaw
ou FromSqlAsync
: <code class="language-csharp">var result = context.SomeModels.FromSqlRaw("SQL SCRIPT").ToList(); var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>
EF Core 2.1 et supérieur:
Pour les versions plus anciennes (EF Core 2.1 et plus), envisagez d'utiliser Types de requête :
DbQuery<T>
dans votre DbContext
, où T
est une classe personnalisée correspondant à la structure de sortie de votre requête. FromSql
sur cette propriété DbQuery
: <code class="language-csharp">public DbQuery<SomeModel> SomeModels { get; set; } var result = context.SomeModels.FromSql("SQL_SCRIPT").ToList(); var result = await context.SomeModels.FromSql("SQL_SCRIPT").ToListAsync();</code>
Ces méthodes offrent une flexibilité dans la récupération des données des requêtes SQL brutes, des scénarios accommodants impliquant un classement et des entités non cartographiées au sein de l'entité Framework Core.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!