Сначала я загрузил все сообщения из базы данных. Затем я выбрал то, что мне нужно.
Но это не правильно загрузить все.
var ldetails = _context.RegistrationUsers.Include (i => i.ListFriends) .ThenInclude (z => z.MessagesDetails) .SingleOrDefault (c => c.UserName == Context.User.Identity.Name);
Я хотел загрузить только одно сообщение по критерию, но постоянно получаю сообщение об ошибке.
Пожалуйста, покажи мне, как это сделать.
Я пробовал
var ldetails = _context.RegistrationUsers.Include(i => i.ListFriends).ThenInclude(z=>z.MessagesDetails.SingleOrDefault(g=>g.TextMessage == messagesDetail.TextMessage)).SingleOrDefault(c => c.UserName == Context.User.Identity.Name);
Но я получаю ошибку (
public class RegistrationUser
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PMId { get; set; }
[Required]
[Column(TypeName ="varchar(16)")]
public string UserName { get; set; }
[Required]
[Column(TypeName = "varchar(16)")]
public string Password { get; set; }
[Column(TypeName = "varchar(480)")]
public string Token { get; set; }
public ICollection<ListFriend> ListFriends { get; set; }
public RegistrationUser()
{
ListFriends = new List<ListFriend>();
}
}
public class ListFriend
{
[Key,Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
[Required]
[Column(TypeName ="varchar(16)")]
public string UserFriendName { get; set; }
public ICollection<MessagesDetail> MessagesDetails { get; set;
}
public ListFriend()
{
MessagesDetails = new List<MessagesDetail>();
}
}
public class MessagesDetail
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key,Column(Order = 0)]
public int PMIdMes { get; set; }
[Required]
[Column(TypeName ="nvarchar(240)")]
public string TextMessage{ get; set; }
[Required]
[Column(TypeName = "varchar(16)")]
public string SenderUser { get; set; }
[Required]
[Column(TypeName = "varchar(16)")]
public string CatcherUser { get; set; }
}
//My method
[Authorize]
public async Task DeleteMessage(string frend ,MessagesDetail
messagesDetail)
{
var ldetails = _context.RegistrationUsers.Include(i =>
i.ListFriends).ThenInclude(z=>z.MessagesDetails.
SingleOrDefault(g=>g.TextMessage == messagesDetail.TextMessage)).
SingleOrDefault(c => c.UserName == Context.User.Identity.Name);
//.....
}
I expect to receive a message for the condition:
g=>g.TextMessage == messagesDetail.TextMessage;