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

本文关键字:两个 链接 字符串 MVC int | 更新日期: 2023-09-27 18:19:15

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

用户名的格式为"ADHP'BCOOPER"-我希望用户能够在登录时显示一个"友好的名称",所以要映射Post -> Username属性,这是一个字符串,到CorpUsers -> Username属性,这样我就可以在我的Linq查询中链接表,使用。include (x => x.CorpUsers)

你如何链接两个表这样(当它不是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; }
}

谢谢

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

很难说你在这里想要什么。例如,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();

这与您处理的是整型还是字符串无关,而是与表中哪些是键或哪些不是键有关。如果希望外键是相关表中的用户名,那么用户名必须是用户表中的主键。这就是数据库关系的工作方式。但是,我并不建议将用户名作为主键。