小编Seb*_* S.的帖子

命令行分析器库 - 布尔参数

我尝试将一个布尔参数传递给控制台应用程序,并使用命令行解析器库处理该值.

[Option('c', "closeWindow", Required = true, HelpText = "Close the window.")]
public bool CloseWindow { get; set; }
Run Code Online (Sandbox Code Playgroud)

我试图将参数传递为

-c false
-c False
-c "false"
-...
Run Code Online (Sandbox Code Playgroud)

没有差异,每次尝试我得到"true"的价值.

任何人都可以告诉我如何传递参数来获取布尔false值?

为了避免可能的问题,有一个正确传递的字符串选项:

[Option('s', "system", Required = true, HelpText = "Any help text")]
public string System { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# nuget-package command-line-parser

15
推荐指数
2
解决办法
5968
查看次数

在 Dockerfile 中运行 sqlcmd

是否可以在 dockerfile 中运行 sqlcmd?

首先我创建一个图层

FROM microsoft/mssql-server-windows-developer:2017-latest
Run Code Online (Sandbox Code Playgroud)

之后我接受 eula 并设置 sa 密码,如下所示:

ENV ACCEPT_EULA=Y

ENV SA_PASSWORD=VerySecret!
Run Code Online (Sandbox Code Playgroud)

这样做之后,我尝试执行一个简单的示例查询:

RUN sqlcmd -S "localhost" -U "SA" -P "VerySecret!" -Q "select name from master.dbo.sysdatabases"
Run Code Online (Sandbox Code Playgroud)

不幸的是,docker build 命令中断并显示错误消息“Sqlcmd: 'name from master.dbo.sysdatabases': Unexpected argument. Enter '-?' 求助。”

难道我做错了什么?

docker dockerfile

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

使用 EF Core 加载未映射的属性

我尝试通过调用存储过程来使用 EF Core 加载实体。实体通过流畅映射映射到表,该映射不包含存储过程选择的所有列。

在实体配置中将忽略不作为表列存在的选定字段,如下所示:

        modelBuilder.Entity<CustomerLocationEntity>().Ignore(c => c.Latitude);
        modelBuilder.Entity<CustomerLocationEntity>().Ignore(c => c.Longitude);
        modelBuilder.Entity<CustomerLocationEntity>().Ignore(c => c.Radius);
        modelBuilder.Entity<CustomerLocationEntity>().Ignore(c => c.Distance);
Run Code Online (Sandbox Code Playgroud)

存储过程的调用方式如下:

await SalesContext.CustomerLocation
            .FromSql("GetCustomersByLocation @latitude={0}, @longitude={1}, @radius={2}", lat,
                lon, radius)
            .ToListAsync();
Run Code Online (Sandbox Code Playgroud)

执行查询时,忽略的列不会映射到实体。调用存储过程时是否有可能将忽略的字段映射到实体,或者我是否必须为存储过程创建另一个实体或类似的东西?

c# entity-framework entity-framework-core

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

在多个线程中添加和删除时 List&lt;string&gt; 中的 null 值

我知道 C# System.Collections.Generic.List 对象不是线程安全的。但我想知道为什么这段代码会生成空值。

Task.Run(() =>
{
    for (var i = 0; i < 10; i++)
    {
        var str = $"Test {i}";
        list.Add(str);

        if (i == 9)
        {
            i = 0;
        }
    }
});

Task.Run(() =>
{
    while (true)
    {
        list.Remove("Test 1");
        list.Remove("Test 2");
        list.Remove("Test 3");
        list.Remove("Test 4");
        list.Remove("Test 5");
        list.Remove("Test 6");
        list.Remove("Test 7");
        list.Remove("Test 8");
        list.Remove("Test 9");
    }
});
Run Code Online (Sandbox Code Playgroud)

这是几秒钟后列表的一部分:

在此处输入图片说明

如果条目不存在于列表中,则负责从列表中删除条目的线程可能会崩溃。因此,出于其他多线程原因,我理解为什么没有从列表中删除某些对象,但我不明白这些空值是如何生成的。有没有人解释这些值是如何生成的?

c# multithreading list

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