0

特定のユーザーのすべての権限を取得するために、次のインデックスを作成しています。変換でroles.SelectMany(x => x.Permissions)は、重複が含まれる可能性があるので、それを配置したいと思い.Distinct()ます。しかし、Enumerable.Distinct(roles.SelectMany(x => x.Permissions)そうすると、レイヴンの内部に翻訳されてしまい、結果が返ってこないようです。.Distinct()の代わりに使用するようにRavenで直接インデックスを変更するとEnumerable.Distinct(...)、完全に機能します。

レイヴンで正しく翻訳されるように、これをどのように書くことができますか?

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()
                                                        };
    }
}
4

1 に答える 1

0

これは、実際には古い結果の問題だったと思います。https://groups.google.com/forum/?fromgroups#!topic/ravendb/0hO8TOQicwcで回答済み

于 2012-06-25T18:59:45.200 に答える