我在使用EF 2.0的ASP.NET Core 2.0应用程序中有一个AppUser类
用户可以发送和接收消息,我有一个方法可以获取最新消息的最新日期(如果有):
public IEnumerable<Message> MessagesSent { get; set; }
public IEnumerable<Message> MessagesReceived { get; set; }
public DateTime DateOfLastMessage()
{
var sentDate = new DateTime();
var receivedDate = new DateTime();
if (MessagesSent != null)
{
sentDate = this.MessagesSent.Select(x => x.Created).Last();
}
if (MessagesReceived != null)
{
receivedDate = this.MessagesReceived.Select(x => x.Created).Last();
}
return (sentDate > receivedDate ? sentDate : receivedDate);
}
但是当我使用以下方式加载用户时:
_userManager.FindByIdAsync(relevantContact).Result;
然后不加载导航属性,因此DateOfLastMessage函数将始终是DateTime最小值。
我该如何解决这个问题? (另外,我的方法可以简化......?)
_userManager
不了解或关心您在User类中拥有的其他导航属性。
如果您想要加载这些属性,您可以选择一些选项。
_userManager.Users.Include(x => x.MessagesSent).Include(x => x.MessagesReceived)
。UserManager
并覆盖FindByIdAsync()
方法并注册它以进行依赖注入。DbContext
直接查询Users
数据。