【发布时间】:2014-12-11 23:52:28
【问题描述】:
我在一个组织的网站上工作,这是非营利性的,我是免费做的,所以我不是在这里找人来帮我做我的工作,只是在我发现非常棘手的事情上提供一些帮助因为它对我来说比较新
使用 aspnet 实体的数据库
所以我要查询的表是
- AspNetRoles
- AspNetUserRoles
- AspNetUsers
我也有自己的桌子
- myEvents (Id, Title, PrivateEvent)
- myEventsInRoles (EventId, RoleId)
- EventId is FK to myEvents(Id) and RoleId is FK to AspNetRoles(Id)
现在,当我创建我的 ADO 实体模型时,因为 myEventsInRoles(如 AspNetUserRoles)只有 2 列,它们都是外键,如 AspNetUserRoles,它不会为其生成实体。所以这两个表不能用linq查询。
所以我的情况是这样的
用户登录并想要查看事件列表。所以例子可能是
- AspNetUsers
- Id=1
- AspNetUserRoles
- UserId=1, RoleId=1
- AspNetRoles
- Id=1, Name=Red Team
- Id=2, Name=Blue Team
- Id=3, Name=Green Team
- myEvents
- Id=1, Title=Big event, PrivateEvent=0
- Id=2, Title=Red And Green Team event, PrivateEvent=1
- Id=3, Title=Blue Team event, PrivateEvent=1
- myEventsInRoles
- EventId=2, RoleId=1
- EventId=2, RoleId=3
- EventId=3, RoleId=2
假设我们的用户在红队中
选择让他们查看的事件应该是事件 1 和 2,因为它们应符合以下规则
- 将 PrivateEvent 标志设置为 false 的所有事件
- 所有将 PrivateEvent 标志设置为 true 的事件和 该 eventId 存在于 myEventsInRoles 中,并且用户具有与 myEventsInRoles 中的该记录关联的相同 RoleId
所以我希望看到大事件和红队事件
我认为这有点复杂,但与另一个我也无法锻炼的查询没有什么不同,即简单地获取用户的所有角色 ID 和角色名称。
【问题讨论】:
-
如果有人可以帮助解决这个问题,不仅仅是寻找答案,而且是否有人可以解释它是如何工作的:)
标签: c# linq entity-framework