So reduzieren Sie Entity Core-Many-to-Many-Sammlungen mithilfe von LinqC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 So reduzieren Sie Entity Core-Many-to-Many-Sammlungen mithilfe von Linq

Post by Anonymous »

Ich kann nicht herausfinden, wie ich eine Viele-zu-Viele-Sammlung reduzieren kann. Die Entitäten sind für die mit Entity Framework Core erstellten Identitätstabellen bestimmt. Sie enthalten Navigationseigenschaften, die ich manuell hinzugefügt habe, da die Identitätsentitäten diese nicht standardmäßig enthalten (zusammen mit benutzerdefiniertem Modell-Builder-Code, der nicht angezeigt wird)

Code: Select all

public class AppUser : IdentityUser {

public string FirstName { get; set; }
public string LastName { get; set; }

public virtual List UserRoles { get; set; } = new List();

}

public class AppRole : IdentityRole {

public virtual List UserRoles { get; set; } = new List();

}

public class AppUserRole : IdentityUserRole {

public virtual AppUser User { get; set; }
public virtual AppRole Role { get; set; }

}
Dies ist der Aufruf in meinem Repo:

Code: Select all

public async Task GetAllWithRoles()
{
return await _dbSet
.AsNoTracking()
.Include(u => u.UserRoles)
.ThenInclude(ur => ur.Role)
.ToListAsync();
}
Der obige Aufruf gibt diese Struktur zurück:

Code: Select all

[
{
"firstName": "XXXX",
"lastName": "YYYYY",
"userRoles": [
{
"role": {
"userRoles": [],
"id": 1,
"name": "xxx",
"normalizedName": "xxxx",
"concurrencyStamp": "1617fe40-77e2-46cb-9c1c-df597d09775c"
},
"userId": 1,
"roleId": 1
}
]
}
]
Was ich will, ist Folgendes:

Code: Select all

[
{
"firstName": "Alex",
"lastName": "Florin",
"RoleName": "Role1",
},
{
"firstName": "Alex",
"lastName": "Florin",
"RoleName": "Role2",
},
{
"firstName": "Jon",
"lastName": "Smith",
"RoleName": "Role1",
},
]
Ich möchte die Sammlung reduzieren. Ich habe mir SelectMany angesehen, kann aber nicht herausfinden, wie ich es mit einer Many-to-Many-Sammlung verwenden soll, da ich bei Linq noch relativ neu bin. Und ich weiß, dass der Typ der Aufruffunktion in ein Ansichtsmodell geändert werden muss, das meiner gewünschten Struktur entspricht.

Automapper ist eine weitere Option, da ich damit die Ansichtsmodelle für meine einfacheren Entitäten erstelle, aber mir ist nicht klar, wie ich damit eine Viele-zu-Viele-Beziehung reduzieren soll

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post