NHibernate 和 NHibernate Fluent:映射枚举位掩码,但作为项目存储在另一个表中
我有一个名为 User 的类。用户可以拥有一个或多个角色,这些角色在位掩码枚举中定义。用户有一个 Role 属性,我可以通过以下方式使用:
user.Roles = Roles.User | Roles.Other;
在数据库中,我有一个 Users 表和一个 User_Roles 表。对于用户拥有的每个角色,我想将其与 UserID 和角色的字符串表示形式存储在 Users_Roles 表中。例如,为前面的示例存储的数据将是:
User_Roles
---
UserID Role
23 User
23 Other
我将如何创建此映射?我已经阅读了这些示例,它们似乎都将其直接映射到用户表。
I have a class called User. User can have one or more roles, defined in an bitmask enum. The user has a Role property that i can use via:
user.Roles = Roles.User | Roles.Other;
In the database I have a Users table and a User_Roles table. For every role that a user has, i want to store it in the Users_Roles table with the UserID and the string representation of the Role. for example, the data stored for the previous example would be:
User_Roles
---
UserID Role
23 User
23 Other
how would i create the mapping on this? i've read the examples, and they all seem to map it straight to the User table.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
NHibernate 不会将单个值映射到表,但您可以在枚举上使用 Linq-to-object 投影:
然后将其映射为集合:
如您所见,您甚至不需要创建集合属性公开,因此这对应用程序的其余部分是透明的。
NHibernate will not map a single value to a table, but you can use a Linq-to-object projection on the enum:
And then map it as a set:
As you can see, you don't even need to make the collection property public, so this is transparent to the rest of your application.