2010-04-24 52 views
0

引用如何使用实体框架和Asp.Net MVC 2个

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既有用户名和TeamMemberUserId作为索引键。

我的目标是显示我的视图上的用户列表。在我想标记的列表中,或突出显示LoggedIn用户的团队成员的用户。

我的视图模型

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,没有关系在这张桌子上,我怎么将它连接到用户对象?
所以我用这个列表比较的loggedIn用户ID(选择TeamMemberUserId FROM TeamMember其中userid = @LoggedInUserId)

编辑
TeamMemberUserId是一个团队成员的用户的用户ID。
我将表命名为用户以避免与System.We.Security User类混淆。

回答

0

我推测TeamMemberUserId真的是TeamId吗?

为什么表格之间没有关系?

为什么多元化搞砸了?用户vs用户?

听起来像是你需要的东西,如: -

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关系,这将是干净多了。