J'ai une vue existante contenant trop de données. Malheureusement, je ne peux pas m'en débarrasser, j'ai donc besoin d'essayer de contourner le problème en utilisant ma cartographie NHibernate. L'idée est d'avoir NH question la requête suivante:Récupération de valeurs distinctes dans le mappage
SELECT DISTINCT User_Id, Module_Id, Application_Id, RightsMask
FROM V_UserApplicationPermissions
WHERE User_Id = ?
Ma cartographie actuelle de cette liste des types AccessControlEntry ressemble à ceci:
HasMany<AccessControlEntry>(x => x.Rights)
.WithTableName("V_UserApplicationPermissions")
.KeyColumnNames.Add("User_Id")
.Component(c =>
{
c.Map(x => x.Module, "Module_Id");
c.Map(x => x.Application, "App_Id");
c.Map(x => x.Rights, "RightsMask").CustomTypeIs<ApplicationRightsType>();
})
.Not.LazyLoad();
Toute réflexion sur la façon d'avoir NHibernate mettre un mot-clé DISTINCT là pendant la requête?
MISE À JOUR: Permettez-moi de partager le reste de la carte de l'utilisateur qui pourrait aider à pourquoi il est pas un critère simple:
WithTable("Users");
Id(x => x.Id, "UserId");
Map(x => x.Name, "UserName");
HasMany<long>(x => x.Clients)
.WithTableName("V_UserClients")
.KeyColumnNames.Add("UserId")
.AsElement("ClientId");