J'ai une vue SQL dans ma base de données appelée 'dbo.Viewtest'. Cette vue combine les données de 2 autres tables, qui ont des types de colonnes identiques. La vue ajoute également une colonne indiquant la table d'où proviennent les données.
Voici à quoi ressemble la vue SQL dans l'explorateur d'objets de SQL Server :
dbo.ViewTest
Id | Type | Contenu | Emplacement
1 | h1 | Bienvenue!| Accueil
2 | p | Connexion | Accueil
3 | h2 | guide | Accueil
1 | h1 | info | Événements
2 | p | suivre | Événements
Cette vue est créée à partir de deux tables, dont l'une est appelée "HomeContent" et l'autre "EventsContent" (d'où la colonne de l'emplacement). La vue a été créée à l'aide du code suivant :
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("CREATE VIEW ViewTest AS " +
"SELECT Id, Type, Content, 'Home' location FROM HomeContent UNION ALL " +
"SELECT Id, Type, Content, 'Evenementen' FROM EvenementenContent");
}
J'ai ensuite ajouté une classe de modèle comme suit :
[Table("ViewTest")]
public class TestViewContent
{
[Key]
public int Id { get; set; }
public string Type { get; set; }
public string Content { get; set; }
public string Location { get; set; }
}
Enfin, je l'ai ajouté à mon DbContext :
public DbSet<TestViewContent> TestViewContent { get; set; }
C'est ici que les choses commencent à se gâter. Lorsque j'essaie d'afficher cette vue SQL, en utilisant EF Core, j'obtiens le résultat suivant :
Id | Type | Contenu | Emplacement
1 | h1 | Bienvenue!| Accueil
2 | p | Connexion | Accueil
3 | h2 | guide | Accueil
1 | h1 | Bienvenue | Accueil
2 | p | log in | Home
Comme vous pouvez le voir, pour une raison quelconque, lorsque j'essaie d'afficher la vue SQL, les données "tournent en boucle" alors que les données de la table "Événements" sont censées s'afficher. Ainsi, pour une raison quelconque, seules les données de la table "Home" sont affichées.
Le code que j'utilise pour afficher la vue SQL est le suivant :
private readonly DbApplicationContext_context;
public TestViewContentController(DbApplicationContext_context)
{
_context = context;
}
public async Task<IActionResult> Index()
{
return View(await _context.TestViewContent.ToListAsync());
}
Quelqu'un pourrait-il m'aider ? Au cas où il ne serait pas possible d'afficher des vues SQL, quelqu'un connaît-il un meilleur moyen de combiner plusieurs tables et d'ajouter une colonne "Emplacement" pour retracer la table d'où proviennent les données ? Toute aide serait grandement appréciée !