C# EntityFramework核心2.1:配置DbContext后的访问和更改选项?

C# EntityFramework核心2.1:配置DbContext后的访问和更改选项?,c#,entity-framework,ef-core-2.1,C#,Entity Framework,Ef Core 2.1,在EntityFramework Core中,您可以使用DbContextOptionsBuilder添加不同的选项 是否可以访问为以后的DbContext设置的选项 在我的例子中,我想知道是否激活了使用代理的延迟加载(该功能是通过使用Microsoft.EntityFrameworkCore.Proxies包添加的) 另外,在创建和配置了DbContext之后,是否可以更改这些配置的选项?在深入研究了EFCore 2.1的当前代码之后,我发现了一些东西 如果在DbContext中保留对DbCo

在EntityFramework Core中,您可以使用
DbContextOptionsBuilder
添加不同的选项

是否可以访问为以后的
DbContext
设置的选项

在我的例子中,我想知道是否激活了使用代理的延迟加载(该功能是通过使用
Microsoft.EntityFrameworkCore.Proxies
包添加的)


另外,在创建和配置了
DbContext
之后,是否可以更改这些配置的选项?

在深入研究了EFCore 2.1的当前代码之后,我发现了一些东西

如果在
DbContext
中保留对
DbContextOptionsBuilder
的引用,则可以访问扩展名和相关值。例如:

context.OptionsBuilder.Options.FindExtension<ProxiesOptionsExtension>()?.UseLazyLoadingProxies;
context.OptionsBuilder.Options.FindExtension()?.UseLazyLoadingProxies;
但是EFCore团队不推荐它。使用
代理选项扩展的注释如下:

此API支持实体框架核心基础架构,不支持 旨在直接从代码中使用。此API可能会更改或更改 在将来的版本中删除

请注意这一点

我实现了它,但我需要几天的时间才能尝试它,并确信它能像我预期的那样工作。(在我的场景中,我必须在它周围添加很多附加内容。)


我会随时通知您。

其他选项表示连接详细信息?您可以使用
DbConnection con=\u context.Database.GetDbConnection()来获取它。更像是一个选项(在我的例子中是代理创建)是否被激活。例如,您可以通过DbContext.ChangeTracker询问是否启用了AutoDetectChanges或LazyLoading(并在需要时进行设置)。