FluentNHibernate有许多语法

FluentNHibernate有许多语法,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我有一个这样的模式来定义用户在不同模块下的不同角色。我知道,若UserRoleSetting表只是一个简单的多对多关系表,那个么很容易定义。但该表实际上包含来自3个不同表的关系,那么将用户角色设置加载到用户对象中的正确语法是什么呢 谢谢 Hardy您希望映射的是三向多对多 你不能直接定义它。相反,您可以创建一个单独的实体UserRoleSetting,并使用以下方法将其映射:用户、模块、角色中的一对多,以及UserRoleSetting中的多对一。在FluentNHibernate中,它分别转换

我有一个这样的模式来定义用户在不同模块下的不同角色。我知道,若UserRoleSetting表只是一个简单的多对多关系表,那个么很容易定义。但该表实际上包含来自3个不同表的关系,那么将用户角色设置加载到用户对象中的正确语法是什么呢

谢谢


Hardy

您希望映射的是三向多对多

你不能直接定义它。相反,您可以创建一个单独的实体UserRoleSetting,并使用以下方法将其映射:用户、模块、角色中的一对多,以及UserRoleSetting中的多对一。在FluentNHibernate中,它分别转换为HasMany()和References()

如果不需要双向性,可以省略每个连接映射的一侧


这解决了您的问题吗?

您希望映射的是三向多对多

你不能直接定义它。相反,您可以创建一个单独的实体UserRoleSetting,并使用以下方法将其映射:用户、模块、角色中的一对多,以及UserRoleSetting中的多对一。在FluentNHibernate中,它分别转换为HasMany()和References()

如果不需要双向性,可以省略每个连接映射的一侧

这能解决你的问题吗

CREATE TABLE [dbo].[User](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [varchar](50) NOT NULL,
    [Password] [varchar](50) NOT NULL,
 CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED 
(
    [UserID] ASC
) ON [PRIMARY]

CREATE TABLE [dbo].[Module](
    [ModuleID] [int] NOT NULL,
    [ModuleName] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_Module] PRIMARY KEY CLUSTERED 
(
    [ModuleID] ASC
) ON [PRIMARY]

CREATE TABLE [dbo].[Role](
    [RoleID] [int] NOT NULL,
    [RoleName] [nvarchar](50) NOT NULL,
 CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED 
(
    [RoleID] ASC
) ON [PRIMARY]

CREATE TABLE [dbo].[UserRoleSetting](
    [UserID] [int] NOT NULL, /* FK to User table */
    [ModuleID] [int] NOT NULL, /* FK to Module table */
    [RoleID] [int] NOT NULL, /* FK to Role table */
 CONSTRAINT [PK_UserRoleSetting] PRIMARY KEY CLUSTERED 
(
    [UserID] ASC,
    [ModuleID] ASC
) ON [PRIMARY]

GO