我有一个现有视图,其中包含太多数据。不幸的是,我无法摆脱它,所以我需要尝试使用我的NHibernate映射来解决它。其想法是让NH发布以下查询:
SELECT DISTINCT User_Id, Module_Id, Application_Id, RightsMask
FROM V_UserApplicationPermissions
WHERE User_Id = ?
此访问控制项类型列表的当前映射如下所示:
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();
有没有想过在查询过程中如何让nhibernate在其中放置一个独特的关键字?
更新:
让我分享用户地图的其余部分,这可能有助于解释为什么它不是一个直接的标准:
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");