MVC通过字符串键而不是int键链接两个表

时间:2013-06-20 10:21:41

标签: c# asp.net-mvc asp.net-mvc-3 linq

我正在使用Intranet应用程序 - 所以Windows身份验证。

用户名的格式为“ADHP \ BCOOPER” - 我希望用户在登录时能够显示“友好名称”,因此要映射帖子 - > UserName属性,它是一个字符串,给CorpUsers - > UserName属性,所以我可以使用.Include(x => x.CorpUsers)链接我的Linq查询中的表

如何链接这样的两个表(当它不是ID的/ int时,而是字符串)?

这些是我刚才的域模型:

public class Post
{
    public int PostId { get; set; }
    public string Content { get; set; }
    public string UserName { get; set; }
    public DateTime DateOfPost { get; set; 
}

public class CorpUsers
{
    public int CorpUsersId { get; set; }
    public string UserName { get; set; }
    public string FriendlyName { get; set; }

}

谢谢

2 个答案:

答案 0 :(得分:1)

很难说出你想要的东西。即MVC映射或LINQ连接。

LINQ中你可以这样做:

var Posts = (from cu in ListCorpUsers
             join p in ListPosts on cu.UserName equals p.UserName
             select new {
                 FriendlyName = cu.FriendlyName,
                 UserName = cu.UserName,
                 Content = p.Content
             }).ToList();

答案 1 :(得分:0)

这与您处理整数或字符串无关,而是与您的桌子上的关键字有什么关系。如果您希望外键是相关表中的用户名,则用户名必须是您的用户表上的主键。这就是数据库关系的工作方式。但是,我根本不建议将用户名作为主键。