小编cur*_*Boy的帖子

如何创建使用另一个CTE作为数据进一步限制的CTE?

我在这里搜索过这个问题,但找不到它,如果我们已经在网站上有它,请重定向我.

我正在寻找一种方法来创建CTE,它使用另一个CTE作为进一步限制的数据.我有一个CTE,它为我创建了一个报告,但我希望使用现有的CTE以另一个输入来缩小此报告.

我希望我的问题很明确.

sql common-table-expression

15
推荐指数
3
解决办法
1万
查看次数

EF Core 单一查询与拆分查询

我正在使用 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(或任何其他唯一属性或属性组合)排序使排序完全唯一并避免此问题。请注意,关系数据库默认情况下不应用任何排序,即使在主键上也是如此。

这完全有道理,因为查询将被拆分。

但是,如果我们主要从数据库中获取单个记录,无论包含列表及其导航属性有多大或多小,我是否应该始终采用“拆分”方法?

我很想知道是否有任何最佳实践以及何时使用哪种方法。

c# entity-framework-core

14
推荐指数
1
解决办法
7416
查看次数

如何限制受保护的成员只能从第一级子 C# 访问

我有3个级别的课程。

  • TopClass
  • MiddleClass
  • BottomClass

并且MiddleClass源自TopClassBottomClass源自MiddleClass

我想要一个TopClass只能从 访问TopClassMiddleClass不能访问的属性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)

c# oop inheritance

7
推荐指数
1
解决办法
803
查看次数

如何检测javascript单击的后退按钮或前进按钮?

只是为了确保,我不是在问如何捕捉后退/前进按钮事件。

window.addEventListener('popstate', function (e) {
                       alert("Yahoooo!!!!"); 
                   });
Run Code Online (Sandbox Code Playgroud)

上面的那个函数是浏览器的后退按钮还是浏览器的前进按钮触发的,但我无法检测到点击了哪个?是后退键还是前进键?

是否有任何特定事件让我可以检测到它是“后退”或“前进”按钮?

编辑:虽然我很欣赏的“重复问题”的建议,在类似的问题张贴在这里的计算器,但接受的答案是从2012年1月!从那时起,很多事情都发生了变化。也许已经有更简单的方法了!

谢谢

javascript back-button

6
推荐指数
1
解决办法
7718
查看次数

<script>标签的全局范围是什么?

由于误解,我制作了旗帜并删除了我之前的问题.

我正在研究一个经典的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>标记中定义.

我知道它没用,但我需要知道它有没有任何方法.

希望现在更加清晰!

javascript

5
推荐指数
1
解决办法
2万
查看次数

当"包含"列不同时,为同一列创建索引的正确方法

假设我有2个存储过程和1个表.

  • 表名: Table_A
  • 程序名称:proc1proc2

当我运行proc1with执行计划时,它建议我为Table_Afor tblID(这不是主键)列创建索引并建议包含column_Acolumn_B.

proc2建议创建一个索引Table_A再次,对于tblID列,但这次它意味着包括column_Bcolumn_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)

sql-server indexing sql-server-2008

4
推荐指数
1
解决办法
740
查看次数

经典的Asp日期比较无法正常工作

我已经看到了几个与我的问题相似的标题,但他们专注于不同的观点.

我想问的是,

我想比较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)

asp-classic

3
推荐指数
1
解决办法
6368
查看次数

在给定时间内,SharedAccessBlobPolicy未过期 - AZURE

共享访问签名有很多例子,但我仍然无法弄清楚我的代码有什么问题.

我正在尝试做的是,我正在尝试为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# azure azure-storage azure-storage-blobs

2
推荐指数
1
解决办法
1368
查看次数