How to make lazy-loading work with EF Core 2.1.0 and proxies

前端 未结 3 584
北海茫月
北海茫月 2020-12-29 07:48

I have the following models:

public class Session
{
    public int SessionID { get; set; }
    public int UserID { get; set; }

    public virtual User User          


        
相关标签:
3条回答
  • 2020-12-29 07:58

    I solved this by setting JSON serialization in service like this answer https://stackoverflow.com/a/49350457/4178475

    0 讨论(0)
  • 2020-12-29 08:18

    Steps To Configure Lazy Loading with Proxies in Asp.net Core 2.1

    1. Install Microsoft.EntityFrameworkCore.Proxies package
    2. Enable LazyLoadingProxies You can enable it with a call to UseLazyLoadingProxies:
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        => optionsBuilder
            .UseLazyLoadingProxies()
            .UseSqlServer(myConnectionString);
    

    Or when using AddDbContext:

    .AddDbContext<BloggingContext>(
    b => b.UseLazyLoadingProxies()
          .UseSqlServer(myConnectionString));
    
    1. EF Core will then enable lazy loading for any navigation property that can be overridden--that is, it must be virtual.
    0 讨论(0)
  • 2020-12-29 08:19

    You can try to configure proxies in Startup.cs like

    public void ConfigureServices(IServiceCollection services)
    {
        #region Database configuration
    
        // Database configuration
        services.AddDbContext<DbContext>(options =>
            options.UseLazyLoadingProxies()
                .UseSqlServer(Configuration.GetConnectionString("MyConnectionString")));
    
        #endregion Database configuration
    }
    

    And by the way you can already update you app packages to pure 2.1.0 (not final or RC). One of the reasons why your configuration may not work is an unstable version of components.

    NB: Microsoft.EntityFrameworkCore.Proxies.dll is installed from nuget independently from EFCore

    0 讨论(0)
提交回复
热议问题