我在.net core 1.1 MVC中有三个模型。
通讯
public class Communication
{
public Guid CommunicationId { get; set; }
public string Subject { get; set; }
public bool IsRead { get; set; } = false;
public Guid UserId { get; set; }
public Guid AssignedTo { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.Now;
public DateTime UpdatedAt { get; set; } = DateTime.Now;
public Nullable<DateTime> DeletedAt { get; set; }
public virtual ICollection<Message> Messages {get; set;}
}
消息
public class Message
{
public Guid MessageId { get; set; }
public Guid CommunicationId { get; set; }
public Guid SenderId { get; set; } = new Guid();
public Guid ReceiverId { get; set; } = new Guid();
public string Body { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.Now;
public DateTime UpdatedAt { get; set; } = DateTime.Now;
public Nullable<DateTime> DeletedAt { get; set; }
}
用户
Messages表中的SenderID和ReceiverID是Users表中的UserID。
这些模型之间的关系: 通讯has_many消息。 消息belongs_to通信 消息通过SenderID属于用户 通过ReceiverId向用户发送消息blongs_
这是我的控制器看起来像:
_context.Communications.Include(c=> c.Messages)
我想生成一个像这样的JSON对象: {communicationId:'xxx',留言[{messageId:'xxx',发件人:{用户信息转到此处},收件人:{user info goes here}}
如何将User对象包含在Message对象中?
感谢您的帮助。
答案 0 :(得分:1)
将两个类型为Users的属性添加到Message表中,并使用它们分别将SenderId和ReceiverId上的关系定义到Users表。
public virtual Users Sender { get; set; }
public virtual Users Receiver { get; set; }
然后像这样更改您的查询
_context.Communications.Include(c => c.Messages).Include("Message.Users");