假设我有一个表Mail
和一个表Mail.Read
,其中存储了邮件和已阅读邮件的用户之间的关系。
现在我的邮件实体有一个未绑定的属性DateTime? dateRead
,有没有可能以某种方式加入这个属性,保留一个IQueryable<Mail>
?
from m in dbContext.Mails
from mr in dbContext.MailsRead.Where(mr => mr.MailId = m.Id && mr.UserId == UserId).DefaultIfEmpty()
select new { Mail = m, Seen = (DateTime?)mr.DateCreated }
有效,但给了我一个新类型,所以结果不能在IQueryable<Mail>
. 我想以某种方式设置未绑定的属性以保持纯可查询。
例如
(from m in dbContext.Mails
from mr in dbContext.MailsRead.Where(mr => mr.MailId = m.Id && mr.UserId == UserId).DefaultIfEmpty()
select new { Mail = m, Seen = (DateTime?)mr.DateCreated })
.Select(m => { m.DateSeen = m.Seen; return m.Mail; });
在仍然是 IQueryable 时设置属性。由于 EFCore 无法使用此查询,.Where()
因此在此解决方案之后不再可以使用过滤器(例如 )。