没有导航属性的加载fk的更好方法

时间:2019-01-15 16:29:10

标签: c# entity-framework navigation entity-framework-core

我有两个类UserUserDesign,它们之间是一对一的关系。 User具有有关用户的信息,UserDesign具有有关用户的颜色偏好的信息。

UserDesign具有User的导航属性,但是User没有此导航属性。因为用户可以无需设计就可以生存(例如在另一个项目中),并且UserUserDesign 不在同一装配上

目前,我正在获取类似的信息:

_context.UserDesigns.Include(ud => ud.User)
    .ThenInclude(u => u.OtherRelations)
    .Include(ud => ud.User)
    .ThenInclude(u => u.OtherRelations2)
        .ThenInclude(or2 => or2.OtherRelations)

我想做什么:

_context.Users.Include("UserDesign")
    .Include(u => u.OtherRelations)
    .Include(u => u.OtherRelations2)
        .ThenInclude(or2 => or2.OtherRelations)

我认为它更简洁,更易理解,因为请求的目标是用户而不是UserDesign。

所以这不是技术问题,而是思考问题的一种方式^^

当然,如果有一种方法可以实现我的请求,我不知道在哪里可以找到有关UserDesign的信息,因为在User类中我仍然没有导航属性

已编辑

这种建模的另一个问题是,如果我有一个在某种程度上类似于UserDesign的实体,让UserPicture说,我将在一个查询中获取有关User,UserDesign和UserPicture的信息。如果我用SQL编写原始查询,则可以实现。但是在User类中,我没有此Navigations属性,因此我无法使用EF Core实现它。

所以我的问题是,如何在不正确修改User类的情况下实现这一目标?我是否要创建一个具有所有关系的实体,还是有其他解决方案?

0 个答案:

没有答案