Ich habe Probleme mit Dapper
, wenn ich mein Objekt aus der Datenbank zuordnen möchte.Dapper receive Liste als Objektparameter von JOIN Query
class Set
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Guid> GeneratorsList { get; set; }
}
Es enthält eine Liste, damit ich getrennt Tabelle erstellt haben, die es hält, wie die
CREATE TABLE [dbo].[Sets] (
[Id] UNIQUEIDENTIFIER NOT NULL,
[Name] VARCHAR (60) NOT NULL,
[Description] VARCHAR (60) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[Set_Generator] (
[SetId] UNIQUEIDENTIFIER NOT NULL,
[GeneratorId] UNIQUEIDENTIFIER NOT NULL,
PRIMARY KEY CLUSTERED ([SetId] ASC, [GeneratorId] ASC),
FOREIGN KEY ([SetId]) REFERENCES [dbo].[Sets] ([Id]) ON DELETE CASCADE
);
Und aus diesen Tabellen I richtigen Set-Objekt mit minimaler Code Aufwand abrufen möchten. Ich habe versucht, beitreten sie und stark geben Sie das Ergebnis Set
, aber ohne Erfolg.
var result = conn.Query<Set>(@"SELECT [S].[Id], [S].[Name], [S].[Description], [SG].[GeneratorId] AS [GeneratorsList] FROM [Sets] AS [S] INNER JOIN [Set_Generator] AS [SG] ON [S].[Id] = [SG].[SetId];");
Ich bin mir bewusst, dass ich einfach Set
aus der Tabelle abrufen konnte und dann die GeneratorsList
aus separater Abfrage hinzufügen, aber ich bin für eine bessere Lösung.
var sets = conn.Query<Set>(@"SELECT * FROM [Sets];");
foreach(var set in sets)
{
var generators = conn.Query<Guid>(@"SELECT [GeneratorId] FROM [Set_Generator] WHERE [SetId][email protected]", new { SetId = set.Id });
set.GeneratorsList = generators.ToList();
}
Gibt es eine Lösung, die nur eine Abfrage erfordert?
Verwenden 'QueryMultiple' https: // Stackoverflow. com/questions/6751052/how-to-map-multiple-records-von-einem-single-sp-mit-dapper-dot-net – Ric