小编jwd*_*y13的帖子

Linq To SQL选择动态列

是否可以动态限制从LINQ to SQL查询返回的列数?

我有一个包含50多列的数据库SQL视图.我的应用程序有一个包含50多个属性的域对象,每列一个.在我的winforms项目中,我将域对象列表绑定到网格.默认情况下,只有少数列可见,但用户可以打开/关闭任何列.

用户抱怨网格加载时间太长.我捕获了LINQ生成的SQL查询,然后在SQL Server Management Studio中执行它并验证它的速度很慢.如果我改变SQL语句,删除所有不可见的列,它几乎立即运行.性能与查询中的列数之间存在直接关联.

我想知道是否有可能动态地改变从LINQ生成的SQL查询返回的列数?例如,以下是我的代码目前的样子:

public List<Entity> GetEntities()
{
    using (var context = new CensusEntities())
    {
        return (from e in context.Entities
            select e).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

context.Entities对象是从包含超过50列的SQL视图生成的,因此当上面执行时,它生成SQL,如"SELECT Col1,Col2,Col3,... Col50 FROM Entity INNER JOIN ...".我想将方法​​签名更改为如下所示:

public List<Entity> GetEntities(string[] visibleColumns)
{
    using (var context = new CensusEntities())
    {
        return (from e in context.Entities
            select e).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何更改此方法的主体以将生成的SQL语句更改为仅返回我关心的列值,其他所有可以为NULL.

c# sql linq

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

IServiceCollection覆盖单个构造函数参数

我有一个接受三个构造函数参数的类.在我的作文根我想定义/只覆盖一个三个构造函数的参数; 其他两个依赖项已经映射到我的DI容器中,应该从IServiceProvider创建.

有了Ninject,我可以这样做:

Bind<IMyInterface>().To<MyClass>()    
    .WithConstructorArgument("constructorArgumentName", x => "constructor argument value");
Run Code Online (Sandbox Code Playgroud)

当Ninject创建MyClass时,它使用此字符串参数并自动为我注入其他两个依赖项.我在.net核心遇到的问题是我无法告诉IServiceCollection我只想指定三个参数中的一个,我必须定义所有这些或者没有.例如,在.net核心中,这就是我要做的事情:

services.AddTransient<IMyInterface>(x=> new MyClass("constructor argument value", new Dependency2(), new Dependency3());
Run Code Online (Sandbox Code Playgroud)

我不喜欢创建Dependency2和Dependency3类的新实例; 这两个类可以有自己的构造函数参数.我只是希望DI管理这些依赖项.所以我的问题是 - 当使用IServiceCollection类在.net核心中映射依赖项时,如何覆盖单个构造函数参数?

如果你不能只覆盖一个contructor参数,那么如何使用IServiceCollection解决依赖?我尝试过这样的事情:

services.AddTransient<IMyInterface>(x=> new MyClass("constructor argument value", serviceCollection.Resolve<IDependency2>(), serviceCollection.Resolve(IDependency3>());
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我无法弄清楚如何使用IServiceCollection解决依赖关系.

dependency-injection .net-core asp.net-core

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

Docker 构建错误 - NuGet.targets:错误:对路径的访问被拒绝

我有一个多阶段构建的 Dockerfile(大多数文件是由 VS 生成的)。当我在 Windows 10 机器上通过 Docker 构建我的应用程序时,一切正常。

当我尝试在Windows 2019 Standard服务器上构建时,出现此错误:

    Step 13/20 : WORKDIR "/src/Dining.Api"
     ---> Using cache
     ---> 63b85c1e029d
    Step 14/20 : RUN dotnet build "Dining.Api.csproj" -c Release -o /app
     ---> Running in 02a2e5f36cac
    Microsoft (R) Build Engine version 16.2.32702+c4012a063 for .NET Core
    Copyright (C) Microsoft Corporation. All rights reserved.

    C:\Program Files\dotnet\sdk\2.2.401\NuGet.targets(123,5): error : Access to the path 'C:\src\Dining.Domain\obj\Dining.Domain.csproj.nuget.dgspec.json' is denied. [C:\src\Dining.Api\Dining.Api.csproj]

    Build FAILED.

    C:\Program Files\dotnet\sdk\2.2.401\NuGet.targets(123,5): error : Access to the path 'C:\src\Dining.Domain\obj\Dining.Domain.csproj.nuget.dgspec.json' is denied. …
Run Code Online (Sandbox Code Playgroud)

docker asp.net-core windows-server-2019

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

ChromiumWebBrowser禁用右键单击上下文菜单C#

如何使用C#禁用Chromium Web浏览器中的右键单击上下文菜单?

在Chromium Embedded 3(DCEF3)中找到了这个禁用上下文菜单,但我不熟悉语法(我正在使用C#),而且我没有在名为OnBeforeContextMenu的CefSharp.WinForms.ChormiumWebBrowser类上看到一个事件.

c# winforms

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

Windows 2019 上的 Docker 无法切换到 Linux OSType

我无法将 docker 切换为在 2019 Windows Server 上以 Linux 模式运行。我在网上找到了几个指南,它们展示了如何通过 powershell 执行此操作。运行 PS 脚本后,我注意到 hyper-v 中没有安装虚拟机,并且在服务器重新启动后,docker 仍在 Windows 模式下运行。

我启用了 Hyper-V 窗口角色和容器角色。Docker 在 Windows 模式下似乎工作正常,我只是无法让它切换到 Linux。

这是我尝试进行切换时执行的 PS:

Install-Module DockerProvider
Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview
Run Code Online (Sandbox Code Playgroud)

(重启机器)

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Restart-Service docker
Run Code Online (Sandbox Code Playgroud)

当我运行时,docker info它继续显示 OSType: windows。此外,当我查看 Hyper-V 管理器时,我希望看到一个用于运行 Linux 的虚拟机,但没有虚拟机。我认为这可能与问题有关。

linux docker windows-server-2019

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