嵌套包含在.net核心1.1中

时间:2017-10-20 20:41:52

标签: c# .net-core entity-framework-core

我在.net core 1.1 MVC中有三个模型。

  1. 通讯

    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;}
    }
    
  2. 消息

    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; }
    }
    
  3. 用户

  4. 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对象中?

    感谢您的帮助。

1 个答案:

答案 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");