我正在使用EF Code First,我有一个名为Category的导航属性,我想在每个调用中加载:
public class Product
{
...
public Category Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
要做到这一点,我必须将它包含在我将在Product上进行的所有调用中
var results = from p in db.Products.Include("Category") select p;
Run Code Online (Sandbox Code Playgroud)
有没有办法让Category属性急切加载,因此在每次调用时生成一个SQL连接,而不必每次都包含它?
谢谢
我的 ASPNET 5 应用程序启动中有以下堆栈:
appBuilder.UseIdentityServerBearerTokenAuthentication();
// That calls
app.UseValidationEndpoint();
// That calls
app.UseOAuthBearerAuthentication();
// That calls
app.Use(typeof(OAuthBearerAuthenticationMiddleware), app, options);
Run Code Online (Sandbox Code Playgroud)
最后的调用添加OAuthBearerAuthenticationMiddleware
到中间件管道,此类覆盖CreateHandler()
返回类的新实例的方法OAuthBearerAuthenticationHandler
。
OAuthBearerAuthenticationHandler
class 是处理不记名令牌的类,这就是我要介入的地方。问题是我只能在该Startup.Configure()
方法中设置断点,并且该方法仅在应用程序启动时运行一次。
即使在这种情况下,我也已经开始OAuthBearerAuthenticationHandler
使用从 CodePlex 下载的原始 Katana 源代码并加载适当的符号,但由于某种原因,这些符号不会向我提供有关该类的信息OAuthBearerAuthenticationHandler
。
我真的需要了解该类内部发生了什么,特别是该AuthenticateCoreAsync()
方法,但我不知道如何捕获请求并通过管道堆栈并到达该类,因为Startup.Configure()
仅被调用一次,在我的情况下我只有当我提供不记名令牌时才会出现问题。我希望我足够清楚能够得到答案:)