【发布时间】:2018-03-01 18:34:29
【问题描述】:
我在使用 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 最小值。
我该如何解决这个问题? (顺便说一句,我的方法可以简化吗……?)
【问题讨论】:
-
为什么将
IEnumerable用于导航属性?应该只是List吗?看看article关于导航属性。 -
OT:你为什么使用
.Result? (你不应该)。 -
哪些导航属性?您的 2 个代码 sn-ps 之间的联系尚不清楚。更好地记录它,或创建一个minimal reproducible example
-
@IgorYalovoy 感谢您的提示
-
@HenkHolterman 我使用结果,因为我需要用户作为下一个查询的参数(未显示)。有没有更好的办法?
标签: c# asp.net asp.net-core