Ho il seguente indice che sto creando per ottenere tutte le autorizzazioni per un utente specifico. Nella trasformazione, roles.SelectMany(x => x.Permissions)
potrebbe contenere duplicati, quindi voglio metterlo .Distinct()
su di essa. Tuttavia, quando lo faccio, sembra essere tradotto in Enumerable.Distinct(roles.SelectMany(x => x.Permissions)
all'interno di Raven, che non restituisce risultati. Se cambio l'indice direttamente in Raven da usare .Distinct()
invece di Enumerable.Distinct(...)
, funziona perfettamente.
Come può essere scritto in modo che venga tradotto correttamente in Raven?
public class PermissionsByUser : AbstractIndexCreationTask<User, UserWithPermissions>
{
public override string IndexName
{
get
{
return "Users/PermissionsByUser";
}
}
public PermissionsByUser()
{
Map = users => from user in users
from role in user.Roles
select new {role.Id};
TransformResults = (database, users) => from user in users
let roles = database.Load<Role>(user.Roles.Select(x => x.Id))
select new
{
Id = user.Id,
Username = user.Username,
Password = user.Password,
Roles = user.Roles,
Permissions = roles.SelectMany(x => x.Permissions)//.Distinct()
};
}
}
risposte:
0 per risposta № 1Questo, a mio avviso, era in realtà solo un problema di risultati non aggiornati. Risposto a https://groups.google.com/forum/?fromgroups#!topic/ravendb/0hO8TOQicwc