首先,我有三个实体。管理类时,一切都是相对于用户在nhibernate(orm)
用户,角色,项
一个用户可以有多个角色。 一个项目被分配到一个或多个角色。
因此,用户将有权访问一组不同的项目。
现在有几种方法可以看到这个工作。
有一个用户集合通过多对多的关联有角色。然后,此集合中的每个角色都将拥有自己的Items集合。因此,对于每个用户,我必须获得用户(使用nhib并获取角色和项目),然后对每个角色中的项目执行selectMany以获取用户的所有项目,或者执行一些foreach到端口数据到视图或dto模型。
创建一个数据库触发器,以自动插入到另一个只有用户和项目之间关系的表中,以便在我的用户实体上我只有一个Items集合,其中包含所有项目分配给我。
还有一些我还想不到的方式,因为我是nHibernate的新手。
现在我知道触发器感觉不对,但我不知道如何做到这一点。稍后,用户可能负责一组用户,我们也有一些层次结构。如果任何人都可以阐明他们如何在nhibernate或另一个orm中进行这些场景,那将是非常棒的,或者指向一个方向。
我知道在过去,您必须将所有组合输入到表中,以便查询能够正常工作,但是当您知道sql时,它不会太糟糕。
如果您需要任何其他信息,请让我知道。 干杯
澄清: 你能以某种方式给实体添加额外的约束,以减少一对多的多对多关系吗?例如,以特定方式将这些项目映射到角色。 您使用哪种查询API? LINQ? – smaclell 2009-12-23 06:57:26