猿问

处理实体框架中的导航属性时出现 Argument.NullException

我正在尝试返回一个包含用户所有聊天好友的列表。Chat Buddies 的意思是所有的用户 ID,在消息中我是发送者还是接收者。 这是我的代码:


public List<string> GetUserMessagesGrouped(string userId)

    {

        var a = _context.Users.FirstOrDefault(x => x.Id == userId).SentMessages.Select(m => m.ReceiverID);

        var b = _context.Users.FirstOrDefault(y => y.Id == userId).ReceivedMessages.Select(m => m.SenderID);


        var ChatBuddies = a.Concat(b).Distinct();

        return  ChatBuddies.ToList();

    }

问题是: 我收到此异常。 System.ArgumentNullException: '值不能为空。'


尽管在我的数据库中,我正在测试的这个确切用户有 SentMessages 和 ReceivedMessages。

http://img4.mukewang.com/60d82a2e0001f34c06440064.jpg

固定点


var user = _context.Users.Include("ReceivedMessages").Include("SentMessages").FirstOrDefault(x => x.Id == userId);

        var received = user.ReceivedMessages.Select(r => r.SenderID).ToList();

        var sender = _context.Messages.Where(m => m.SenderID == userId).Select(s => s.ReceiverID).ToList();


        var ChatBuddies = received.Union(sender).ToList();


        return ChatBuddies;

关键是使用,.Include("ReceivedMessages").Include("SentMessages")所以他们不是null。


慕田峪7331174
浏览 136回答 2
2回答
随时随地看视频慕课网APP
我要回答