表格
CREATE TABLE [dbo].[Users](
[UserId] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Email] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[BirthDate] [smalldatetime] NULL,
[CountryId] [int] NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
([UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[TeamMember](
[UserId] [int] NOT NULL,
[TeamMemberUserId] [int] NOT NULL,
[CreateDate] [smalldatetime] NOT NULL CONSTRAINT [DF_TeamMember_CreateDate]
DEFAULT (getdate()),
CONSTRAINT [PK_TeamMember] PRIMARY KEY CLUSTERED
([UserId] ASC,
[TeamMemberUserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
dbo.TeamMember将UserId和TeamMemberUserId都作为索引键。
我的目标是在我的视图上显示用户列表。在我想要标记的列表中,或突出显示作为LoggedIn用户的团队成员的用户。
我的ViewModel
public class UserViewModel
{
public int UserId { get; private set; }
public string UserName { get; private set; }
public bool HighLight { get; private set; }
public UserViewModel(Users users, bool highlight)
{
this.UserId = users.UserId;
this.UserName = users.UserName;
this.HighLight = highlight;
}
}
查看
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<MvcPaging.IPagedList<MyProject.Mvc.Models.UserViewModel>>" %>
<% foreach (var item in Model) { %>
<%= item.UserId %>
<%= item.UserName %>
<%if (item.HighLight) { %>
Team Member
<% } else { %>
Not Team Member
<% } %>
如何切换TeamMember
如果我将dbo.TeamMember添加到EDM,此表上没有关系,我将如何将其连接到Users对象?
所以我将LoggedIn UserId与此列表进行比较(SELECT TeamMemberUserId FROM TeamMember WHERE UserId = @LoggedInUserId)
修改
TeamMemberUserId是作为团队成员的用户的UserId
我将表命名为Users以避免与System.We.Security User类混淆。
答案 0 :(得分:0)
我认为TeamMemberUserId真的是TeamId吗?
为什么表之间没有关系?
为什么多元化搞砸了?用户与用户?
听起来像你需要的东西: -
int userId = ... user Id for current user
var teams = context.TeamMember.Where(tm => tm.UserId == userId);
foreach (User other in ...)
{
int otherId = other.UserId;
bool highlight = teams.Any(team => context.TeamMember.Any(tm => tm.TeamId == team.TeamId && tm.UserId == otherId ));
...
}
如果你在那里有FK关系,哪个会更清洁。