【发布时间】:2019-03-12 09:56:53
【问题描述】:
我正在尝试使用.Include().ThenInclude() 加载相关数据。我正在使用继承,从基类TicketEntry 派生的类可以实现接口IApprovable:
public class Ticket
{
[Key]
public int Id { get; set; }
[Required]
public string Title { get; set; }
public ICollection<TicketEntry> TicketEntries { get; set; }
}
public abstract class TicketEntry
{
[Key]
public int Id { get; set; }
[Required]
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime CreationDate { get; set; }
[Required]
public string UserId { get; set; }
[ForeignKey("UserId")]
public ApplicationUser User { get; set; }
public int TicketId { get; set; }
[ForeignKey("TicketId")]
public Ticket Ticket { get; set; }
}
public class Common : TicketEntry
{
[Required]
public string Description { get; set; }
}
public class CostEstimate : TicketEntry, IApprovable
{
[Required]
[Column(TypeName = "money")]
public decimal Estimate { get; set; }
public Boolean? Approved { get; set; }
public string ApprovingUserId { get; set; }
[ForeignKey("ApprovingUserId")]
public ApplicationUser ApprovingUser { get; set; }
}
现在我想获得一个 Ticket 及其所有 TicketEntries 及其 User 和 ApprovingUser 用于实现接口 IApprovable 的所有 TicketEntries。
我试过这样做:
_context.Ticket
.Include(t => t.TicketEntries)
.ThenInclude(te => te.User)
.Include(t => t.TicketEntries as ICollection<IApprovable>)
.ThenInclude(ia => ia.ApprovingUser)
这不起作用,因为它不是纯属性表达式。
我试图查找类似的案例,但没有找到。我是否遗漏了什么,或者这根本不可能,我正在尝试做一些你通常不应该做的事情?
即使不应该,你会如何做到这一点?
【问题讨论】:
-
在 EF Core 2.0 中不能这样做。虽然 EF Core 2.1(现在在 rc1 中)应该是可能的
标签: c# asp.net-core entity-framework-core ef-core-2.0