没有加载所有消息,我无法从数据库中获取消息 [英] I can not get a message from the database without loading all message

查看:77
本文介绍了没有加载所有消息,我无法从数据库中获取消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我首先从数据库中加载了所有消息。然后我选择了我需要的东西。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆