小编qqq*_*qqq的帖子

为什么我们使用 SET NOCOUNT ON; 连同 SELECT @@ROWCOUNT;?

我正在通过此处的教程学习 EF Core 并且遇到了 T-SQL 查询示例中使用的以下语句:

1SET NOCOUNT ON;含义(来自此处):

停止显示受 Transact-SQL 语句或存储过程影响的行数计数的消息作为结果集的一部分返回。

2SELECT @@ROWCOUNT;含义(从这里

返回受最后一条语句影响的行数。

1和2同时使用。这对我来说很困惑。例如,这里:

exec sp_executesql N'SET NOCOUNT ON;
UPDATE [Books] SET [AuthorId] = @p0
WHERE [BookId] = @p1;
SELECT @@ROWCOUNT;
',N'@p1 int,@p0 int',@p1=4,@p0=1
Run Code Online (Sandbox Code Playgroud)

我不明白为什么有人想要在 1 的帮助下关闭 2 的效果,如果可以通过不将其添加到查询中来避免 2 的影响。即以下查询将与上述查询完全相同:

exec sp_executesql N'UPDATE [Books] SET [AuthorId] = @p0
WHERE [BookId] = @p1;
',N'@p1 int,@p0 int',@p1=4,@p0=1
Run Code Online (Sandbox Code Playgroud)

我在这里遗漏了什么或者同时使用 theSET NOCOUNT ON和 the的目的是什么SELECT @@ROWCOUNT

t-sql sql-server entity-framework rowcount entity-framework-core

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

VS Code IntelliSense 不适用于 Unity。为什么?

VS Code IntelliSense 不适用于 Unity。为什么?

我在 VS Code 中使用 Unity。当我打字时,我没有得到任何与 Unity 相关的建议。例如,gameObject一旦我输入,我就没有得到建议this.

在此处输入图片说明

另一个例子是我不能去MonoBehaviour定义:

在此处输入图片说明 在此处输入图片说明

我看到了这个问题。因此,我检查了答案中推荐的所有扩展是否已安装:

在此处输入图片说明

扩展安装没有帮助。有人可以帮忙解决这个问题吗?

我正在使用Unity 2019.3.2f1

如果在 Unity Editor 中,我转到Window - Package Manager - 搜索Visual Studio Code Editor我看到它在那里:

在此处输入图片说明

实际上我什至看不到System的定义。所以,我认为 VS Code 方面应该有问题:

在此处输入图片说明

另外,我跟着视频。它没有帮助。视频下方有评论:

对于仍然无法使自动完成工作的任何人,请尝试安装“.net framework 4.7.1 developer pack”。

就我而言,我使用的是 Unity 2019.1.2,并且我安装了 dotnet core 2.2,它带有“.net framework 4.7.2.”。显然 Unity 2019.1.2 需要框架 4.7.1。您可以通过检查 Assembly-CSharp.csproj 文件找到所需的 .net 框架版本

我遵循了评论建议。我检查了TargetFrameworkVersion. 它是4.7.1。所以,我下载了4.7.1. …

c# intellisense unity-game-engine visual-studio-code

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

使用 C# 语言的哪些机制将对象的实例传递给 `GC.AddMemoryPressure` 方法?

使用 C# 语言的哪些机制将对象的实例传递给GC.AddMemoryPressure方法?

通过 C# book在CLR 中遇到了以下代码示例:

private sealed class BigNativeResource {
    private readonly Int32 m_size;
    public BigNativeResource(Int32 size) {
        m_size = size;
        // Make the GC think the object is physically bigger
        if (m_size > 0) GC.AddMemoryPressure(m_size);
        Console.WriteLine("BigNativeResource create.");
    }
    ~BigNativeResource() {
        // Make the GC think the object released more memory
        if (m_size > 0) GC.RemoveMemoryPressure(m_size);
        Console.WriteLine("BigNativeResource destroy.");
    }
 }
Run Code Online (Sandbox Code Playgroud)

我无法理解我们如何将一个对象的实例与其增加的压力相关联。我没有看到对象引用被传递给GC.AddMemoryPressure. 我们是否将增加的内存压力 (amp) 与一个对象联系起来?

此外,我认为调用GC.RemoveMemoryPressure(m_size);. 从字面上看它应该没有用。让我解释一下自己。有两种可能:对象实例之间存在关联或不存在关联。

在前一种情况下,GC 现在应该m_size …

c# garbage-collection memory-management memory-pressure

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

为什么建议中间件在ASP.NET Core中异步?

为什么建议中间件在ASP.NET Core中异步?

例如,在教程中,建议定制中间件,但我不了解其背后的原因。

public class MyMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger _logger;

    public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory)
    {
        _next = next;

        _logger = logFactory.CreateLogger("MyMiddleware");
    }

    public async Task Invoke(HttpContext httpContext)
    {
        _logger.LogInformation("MyMiddleware executing..");

        await _next(httpContext); // calling next middleware

    }
}

// Extension method used to add the middleware to the HTTP request pipeline.
public static class MyMiddlewareExtensions
{
    public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<MyMiddleware>();
    }
} 
Run Code Online (Sandbox Code Playgroud)

c# middleware .net-core asp.net-core

0
推荐指数
1
解决办法
56
查看次数