没有加载所有消息,我无法从数据库中获取消息 [英] I can not get a message from the database without loading all message
本文介绍了没有加载所有消息,我无法从数据库中获取消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我首先从数据库中加载了所有消息。然后我选择了我需要的东西。
I first loaded all the messages from the database. Then I chose what I need.
但是它不能正确加载所有消息。
But it's not correctly loading all messages.
var ldetails = _context.RegistrationUsers.Include(i => i.ListFriends).ThenInclude(z=>z.MessagesDetails).SingleOrDefault(c => c.UserName == Context.User.Identity.Name);
我只想按标准加载一条消息,但我经常遇到错误。
请向我展示一种方法。
I wanted to load only one message by criterion but I constantly get an error. Please show me a ways to do it.
我尝试过:
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);
但是我得到一个错误。我的代码如下:
But I get an error. My code looks like:
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;
推荐答案
var pdetails = _context.RegistrationUsers.SingleOrDefault(c=>c.Password==Context.User.Identity.Name);
var nlk = _context.Entry(pdetails).Collection(n => n.ListFriends).Query().SelectMany(n => n.MessagesDetails).Where(z => z.TextMessage == messagesDetail.TextMessage).ToList();
IT工作!
这篇关于没有加载所有消息,我无法从数据库中获取消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文