使用 Entity Framework Core 提前加载相关对象

问题描述 投票:0回答:1

我在 .NET Core 中使用 Entity Framework Core,但我很难让相关对象立即加载。

这是我的相关代码:

public class User : SchemaObject, IUser
{
     public long? UserID { get; set; }
     public Session Session { get; }
}

public class Session : SchemaObject, ISession
{
    public long? SessionID { get; set; }
    public long? UserID { get; set; }
    public User User { get; set; }
}

public class Context : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Session> Sessions { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>()
            .HasOne(e => e.Session)
            .WithOne(e => e.User)
            .HasForeignKey<Session>(e => e.UserID)
            .IsRequired();

        modelBuilder.Entity<User>()
            .Navigation(u => u.Session)
            .AutoInclude();
    }
}

查询:

user = db.Users
         .Include(u => u.Session)
         .FirstOrDefault(u => u.Session.SessionID == result.requestObj.Session.ID);

我尝试在查询中使用

.Include()
以及在
.AutoInclude()
中使用
OnModelCreating()
,但都不起作用。

像这样进行检查

if (user.Session == null)

永远会成功。我让它发挥作用的唯一方法就是做

db.Entry(user).Reference(u => u.Session).Load();

在初始查询之后,但是,据我所知,这将再次往返数据库,而我不希望这样。

如有任何帮助,我们将不胜感激。

c# asp.net-core entity-framework-core
1个回答
0
投票

我面临其他实体框架问题,@StevePy here的评论修复了所有问题

© www.soinside.com 2019 - 2024. All rights reserved.