2017-10-20 14 views
0

私は3つのモデルが.netコア1.1 MVCにあります。ネストされた.netコア1.1に含まれています

  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. ユーザー

のSenderIDとReceiverIDユーザーテーブルのユーザIDです。

これらのモデルの間の関係 通信has_manyメッセージ。通信belongs_toの メッセージ ここReceiverId

を介してユーザblongs_toのSenderID メッセージを介してユーザbelongs_toのメッセージのように私のコントローラに見えるです: {communicationId:私はこのようなJSONオブジェクトを生成したい

_context.Communications.Include(c=> c.Messages) 

: 'xxx'、メッセージ[{messageId: 'xxx'、送信者:{ユーザー情報はここに}}、受信者:{ユーザー情報はこちら}}

メッセージオブジェクトにユーザーオブジェクトを含めるにはどうすればよいですか?

ありがとうございました。

答えて

1

ユーザータイプの2つのプロパティをメッセージテーブルに追加し、これらを使用してSenderIdとReceiverIdのそれぞれの関係をUsersテーブルに定義します。その後

public virtual Users Sender { get; set; } 
public virtual Users Receiver { get; set; } 

この

_context.Communications.Include(c => c.Messages).Include("Message.Users"); 
+0

こんにちはモルガンのようなあなたのクエリを変更します。もう1つの質問。特定のユーザーのすべての通信を見つけるにはどうすればよいですか? 私のメッセージには、senderIdとReceiverIdがあります。 (m => m.Messages.senderId == id || m.Messages.ReceiverId == id).ToListAsync(); var通信=待機_context.Communications.Include(c => c.Messages) 。 これは正しい構文ではありません。それは何であるべきですか?ありがとう –

+0

なぜあなたは 'ThenInclude'を使わないのですか? –

+0

私はThenIncludeが私の問題の正しい解決策ではないと信じています。メッセージはicollectionです。私はicollectionオブジェクトを照会する方法が必要です –

関連する問題