2 つのエンティティが次のような M 対 M の関係を持つ EF モデルがあります。
public class User
{
public int UserId { get; set; }
[System.ComponentModel.DataAnnotations.Schema.InverseProperty("Received")]
public virtual System.Collections.Generic.ICollection<Message> ReceivedMessages { get; set; }
}
public class Message
{
public int MessageId { get; set; }
public virtual System.Collections.Generic.ICollection<User> Received { get; set; }
public Message()
{
this.Received = new System.Collections.Generic.List<User>();
}
}
ある時点で、2 人のユーザーの ID を持っていて、これら 2 人だけに関連するメッセージがあるかどうかを確認したいと考えています。
B.Models.User U1 = db.Users.Single(u => u.UserId == ID1);
B.Models.User U2 = db.Users.Single(u => u.UserId == ID2);
B.Models.Message header = db.Messages.Single(m => m.Received.Count() == 2 && m.Received.Contains(U1) && m.Received.Contains(U2));
ただし、このコンテキストではプリミティブ値しか使用できないというエラーが表示されます。UserId と MessageId を含むエンティティがないので、どうすればこれを達成できますか?