我在这里搜索过这个问题,但找不到它,如果我们已经在网站上有它,请重定向我.
我正在寻找一种方法来创建CTE,它使用另一个CTE作为进一步限制的数据.我有一个CTE,它为我创建了一个报告,但我希望使用现有的CTE以另一个输入来缩小此报告.
我希望我的问题很明确.
我正在使用 EF Core 7。看起来,自 EF Core 5 以来,现在有单一查询执行和分割查询执行。
我发现默认配置仍然使用单个查询执行。
我注意到我的日志中写着:
Microsoft.EntityFrameworkCore.Query.MultipleCollectionIncludeWarning':编译一个查询,该查询通过“包含”或通过投影加载多个集合导航的相关集合,但尚未配置“QuerySplittingBehavior”。默认情况下,实体框架将使用“QuerySplittingBehavior.SingleQuery”,这可能会导致查询性能降低。
然后我在数据库上下文上配置了警告以获取更多详细信息:
services.AddDbContextPool<TheBestDbContext>(
options => options.UseSqlServer(configuration.GetConnectionString("TheBestDbConnection"))
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.MultipleCollectionIncludeWarning))
);
Run Code Online (Sandbox Code Playgroud)
然后我能够具体地看到哪个调用实际上导致了该警告。
var user = await _userManager.Users
.Include(x => x.UserRoles)
.ThenInclude(x => x.ApplicationRole)
.ThenInclude(x => x.RoleClaims)
.SingleOrDefaultAsync(u => u.Id == userId);
Run Code Online (Sandbox Code Playgroud)
所以基本上相同的代码如下:
var user = await _userManager.Users
.Include(x => x.UserRoles)
.ThenInclude(x => x.ApplicationRole)
.ThenInclude(x => x.RoleClaims)
.AsSplitQuery() // <===
.SingleOrDefaultAsync(u => u.Id == userId);
Run Code Online (Sandbox Code Playgroud)
带有Split查询选项。
我浏览了文档,但我仍然不确定如何从中创建模式。
我想将最常见的一个设置为整个项目的默认值,并仅在特定场景下使用另一个。
根据文档,我感觉“Split”一般应该用作默认值,但要小心。我还注意到他们针对分页的文档中写道:
当使用带有 Skip/Take 的分割查询时,要特别注意使查询顺序完全唯一;不这样做可能会导致返回不正确的数据。例如,如果结果仅按日期排序,但可能有多个具有相同日期的结果,则每个拆分查询都可能从数据库中获得不同的结果。按日期和 ID(或任何其他唯一属性或属性组合)排序使排序完全唯一并避免此问题。请注意,关系数据库默认情况下不应用任何排序,即使在主键上也是如此。
这完全有道理,因为查询将被拆分。
但是,如果我们主要从数据库中获取单个记录,无论包含列表及其导航属性有多大或多小,我是否应该始终采用“拆分”方法?
我很想知道是否有任何最佳实践以及何时使用哪种方法。
我有3个级别的课程。
TopClass MiddleClass BottomClass并且MiddleClass源自TopClass且BottomClass源自MiddleClass。
我想要一个TopClass只能从 访问TopClass而MiddleClass不能访问的属性BottomClass。
由于我使用访问修饰符,因此可以从 访问受protected保护的属性。TopClassBottomClass
这是我的课程,可以提供更好的见解。
public class TopClass
{
private string ThisIsOnlyAccessibleForTopClass { get; set; }
protected string ThisIsOnlyAccessibleForTopClassAndMiddleClass { get; set; } // I want this to be accessible only by the MiddleClass
public string AccessibleFromEverywhere { get; set; } // this is good as it is public so accessible everywhere
public virtual void …Run Code Online (Sandbox Code Playgroud) 只是为了确保,我不是在问如何捕捉后退/前进按钮事件。
window.addEventListener('popstate', function (e) {
alert("Yahoooo!!!!");
});
Run Code Online (Sandbox Code Playgroud)
上面的那个函数是浏览器的后退按钮还是浏览器的前进按钮触发的,但我无法检测到点击了哪个?是后退键还是前进键?
是否有任何特定事件让我可以检测到它是“后退”或“前进”按钮?
编辑:虽然我很欣赏的“重复问题”的建议,在类似的问题张贴在这里的计算器,但接受的答案是从2012年1月!从那时起,很多事情都发生了变化。也许已经有更简单的方法了!
谢谢
由于误解,我制作了旗帜并删除了我之前的问题.
我正在研究一个经典的asp项目.
假设你的<script></script> 代码中有很多标签.
例如:
第10行: <script> ..function 1 definition here..</script>
第200行: <script> .. function 2 definition here..</script>
第5000行: <script> ..function 3 definition here..</script>
也在第6000行:我有另一个试图调用function1的标签.
可以不使用*.js文件吗?
例如:
第6000行:
<script> function1(); </script>
Run Code Online (Sandbox Code Playgroud)
这些脚本未在<head>标记中定义.
我知道它没用,但我需要知道它有没有任何方法.
希望现在更加清晰!
假设我有2个存储过程和1个表.
Table_Aproc1和proc2当我运行proc1with执行计划时,它建议我为Table_Afor tblID(这不是主键)列创建索引并建议包含column_A和column_B.
而proc2建议创建一个索引Table_A再次,对于tblID列,但这次它意味着包括column_B和column_C(它暗示column_C,而不是column_A在此过程中)
所以我的问题是,如果我创建了一个包含所有建议列的索引,例如:
CREATE NONCLUSTERED INDEX indexTest
ON [dbo].[Table_A] ([tblID])
INCLUDE ([column_A],[column_B],[column_C])
Run Code Online (Sandbox Code Playgroud)
这会导致任何性能问题吗?
收集INCLUDE列有什么不利之处吗?
或者我应该创建2个不同的索引:
CREATE NONCLUSTERED INDEX indexTest_1
ON [dbo].[Table_A] ([tblID])
INCLUDE ([column_A],[column_B])
CREATE NONCLUSTERED INDEX indexTest_2
ON [dbo].[Table_A] ([tblID])
INCLUDE ([column_B],[column_C])
Run Code Online (Sandbox Code Playgroud)
更新:我想在这个问题上再补充一点.
如果我对主要字段做同样的事情:
我的意思是,
proc-1建议在tblID字段上创建索引.并且proc-2建议在tblID和上创建一个索引column_A.
如果我把它们收集起来:
CREATE NONCLUSTERED …Run Code Online (Sandbox Code Playgroud) 我已经看到了几个与我的问题相似的标题,但他们专注于不同的观点.
我想问的是,
我想比较2个日期.是的,听起来很简单!
这是问题:
我有两个变量,我试图将这两个变量与Now()进行比较.
就像 :
If startDate < Now() and endDate> Now() Then
do something....
End If
Run Code Online (Sandbox Code Playgroud)
但问题是,当我将startDate(即'2013-08-08 09:30 AM')与Now()和endDate(即'2013-09-09 02:30 PM')与Now()进行比较时
startDate = '2013-08-08 09:30 AM' 'This value comes from db, I have not typed it. Just trying to show what it has as a value.
endDate = '2013-09-09 02:30 PM' 'This value comes from db, I have not typed it. Just trying to show what it has as a value.
Run Code Online (Sandbox Code Playgroud)
当我比较这两个日期变量时:
If startDate < Now() Then …Run Code Online (Sandbox Code Playgroud) 共享访问签名有很多例子,但我仍然无法弄清楚我的代码有什么问题.
我正在尝试做的是,我正在尝试为blob创建一个可下载的链接并将其显示给用户.例子通常是关于如何让它保持活力.我正在寻找如何使它过期.
我能够创建可下载的链接,它正在工作,但它没有在给定时间过期.我创建了一个SharedAccessBlobPolicy并设置了SharedAccessExpiryTime属性,但它没有按时到期.
例如,如果我将其设置为5分钟,则在30分钟后仍然可以正常工作.
SharedAccessBlobPolicy sharedPolicy = new SharedAccessBlobPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5),
Permissions = SharedAccessBlobPermissions.Read
};
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
string blobName = "test.txt"; //just for an example
CloudStorageAccount account = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("myConnectionString"));
CloudBlobClient client = account.CreateCloudBlobClient();
// Build shared access signature
CloudBlobContainer container = client.GetContainerReference(ConfigurationManager.AppSettings.Get("myContainerReference"));
container.CreateIfNotExists();
////Get a reference to a blob within the container.
//Create a new stored access policy and define its constraints.
SharedAccessBlobPolicy sharedPolicy = new SharedAccessBlobPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5),
Permissions = SharedAccessBlobPermissions.Read …Run Code Online (Sandbox Code Playgroud) c# ×3
javascript ×2
asp-classic ×1
azure ×1
back-button ×1
indexing ×1
inheritance ×1
oop ×1
sql ×1
sql-server ×1