我有以下情况:
// Model Attribute
int Id;
string Name;
int Classification;
和
// Model Role
int Id;
string Name;
List<Attribute> Attributes;
数据库如下:
tbl_Role
Id Name
1 Admin
2 User
和
tbl_Attribute
Id Name Classification
1 Prename 1
2 Surname 2
和
tbl_Role_Attribute
RoleId ClassificationId
1 1
1 2
2 1
我如何在NHibernate中通过代码创建映射,以根据连接的分类获得角色的所有允许属性,并解析JSON的属性?模型到tbl_Role_Attribute的映射会是什么样子?类似于:
public PolicyMapping()
{
Table("tbl_Role_Attribute");
ManyToOne(a => a.Role, b =>
{
b.Column($"RoleId");
});
ManyToOne(a => a.Attribute, b =>
{
b.Column($"ClassificationId");
});
}
伪getRole((的预期JSON输出
[{Id: 1,
Name: Admin,
allowedAttributes: {
Id: 1
Name: Prename
Classification: 1},
{Id: 2
Name: Surname
Classification: 2}}]
如果你需要进一步的信息,请告诉我。提前谢谢。
编辑:
我的目标实际上是将角色映射到特定的分类(不是每个属性(,并获取该分类中的所有属性。(想象一个类似于某种"群体"的分类(。
您将映射Role
和Attribute
,然后在Role
上有一个many-to-many
。类似(假设Fluenthibernate(:
public class AttributeMap : ClassMap<Attribute>
{
public AttributeMap()
{
Id(a => a.Id);
Map(a => a.Name);
Map(a => a.Classification);
}
}
public class RoleMap : ClassMap<Role>
{
public RoleMap()
{
Id(r => r.Id);
Map(r => r.Name);
HasManyToMany(r => r.Attributes)
}
}
然后您可以创建这样的JSON结果:
var results =
session
.Query<Role>()
.Fetch(r => r.Attributes)
.ToList();
var json =
JsonConvert.SerializeObject(
results
.Select(r =>
new
{
r.Id,
r.Name,
allowedAttributes = r.Attributes
});