C# 从多个表添加到视图模型

C# 从多个表添加到视图模型,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有两个表,tblUsers和tblChat 特布卢斯 [Id] INT IDENTITY (1, 1) NOT NULL, [FirstName] NVARCHAR (50) NULL, [LastName] NVARCHAR (50) NULL, [EmailAddress] NVARCHAR (100) NULL, [Username] NVARCHAR (50) NULL, [Password] NVARCHA

我有两个表,
tblUsers
tblChat

特布卢斯

[Id]           INT            IDENTITY (1, 1) NOT NULL,
[FirstName]    NVARCHAR (50)  NULL,
[LastName]     NVARCHAR (50)  NULL,
[EmailAddress] NVARCHAR (100) NULL,
[Username]     NVARCHAR (50)  NULL,
[Password]     NVARCHAR (50)  NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
tblChat

[Id]       INT            IDENTITY (1, 1) NOT NULL,
[From]     NVARCHAR (50)  NULL,
[To]       NVARCHAR (50)  NULL,
[Message]  NVARCHAR (MAX) NULL,
[DateSent] DATETIME2 (7)  NULL,
[Read]     BIT            NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
我也有各自的DTO:

用户数据

[Table("tblUsers")]
public class UserDTO
{
    [Key]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string EmailAddress { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
}
查特托

[Table("tblChat")]
public class ChatDTO
{
    [Key]
    public int Id { get; set; }
    public string From { get; set; }
    public string To { get; set; }
    public string Message { get; set; }
    public DateTime DateSent { get; set; }
    public bool Read { get; set; }

    [ForeignKey("From")]
    public virtual UserDTO FromUsers { get; set; }
    [ForeignKey("To")]
    public virtual UserDTO ToUsers { get; set; }
}
我还有一个
聊天视图模型
,用于检索
tblChat
表中的所有行,如下所示:

public class ChatVM
{
    public ChatVM()
    {
    }

    public ChatVM(ChatDTO row)
    {
        Id = row.Id;
        From = row.From;
        To = row.To;
        Message = row.Message;
        DateSent = row.DateSent;
        Read = row.Read;
    }

    public int Id { get; set; }
    public string From { get; set; }
    public string To { get; set; }
    public string Message { get; set; }
    public DateTime DateSent { get; set; }
    public bool Read { get; set; }
}
问题是,
ChatVM
还不够,我需要基于
users
表的更多属性

from
属性是
users
表中的uniqye用户名,我需要
ChatVM
中的另外3个属性,它们包含
from
的id、名称和姓氏

基本上类似于以下内容(它经过修改
ChatVM

你应该用like

public class alldata
{
public IEnumerable<tbl_chat> chatdata { get; set; }


public IEnumerable<tbl_user> chatdata { get; set; }
}
公共类所有数据
{
公共IEnumerable chatdata{get;set;}
公共IEnumerable chatdata{get;set;}
}
因此,UserDTO和ChatDTO实体之间有一个“1-1”连接,每个ChatDTO对象都通过Users和Touser的外键引用了2个UserDTO对象。您的ChatVM构造函数接受一个ChatDTO对象作为输入,所以如果您使用外键属性来访问UserDTO类的其他属性,会怎么样

e、 g


假设您的外键实际上实现了表之间的连接,那么通过它们您可以完全访问主类。

这与问题有什么关系?!!
public class alldata
{
public IEnumerable<tbl_chat> chatdata { get; set; }


public IEnumerable<tbl_user> chatdata { get; set; }
}
        FromId = row.FromUsers.Id; //Also you can check if FromUsers property is null to avoid exceptions
        FromFirstName = row.FromUsers.FirstName ;
        FromLastName = row.FromUsers.LastName ;