小编pan*_*ohn的帖子

没有 setter 的 Entity Framework Core 属性

在我的 .net core 3.1 应用程序中,我想将属性封装在某个实体中:

public class Sample : AuditableEntity
{
    public Sample(string name)
    {
        Name = name;
    }

    public int Id { get; }

    public string Name { get; }
}
Run Code Online (Sandbox Code Playgroud)

因此,我删除了所有公共设置器,因此当我想检查此类 Sample 是否已存在时,我的代码中的某个位置

_context.Samples.Any(r => r.Name == name)
Run Code Online (Sandbox Code Playgroud)

该行导致错误:System.InvalidOperationException: 'No suitable constructor found for entity type 'Sample'. The following constructors had parameters that could not be bound to properties of the entity type: cannot bind 'name' in 'Sample(string name)'.'

所以我添加了代码空构造函数

public class Sample : AuditableEntity
{ …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework-core .net-core entity-framework-core-3.1

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

在启动时获取单例服务实例

我有以下情况:

启动.cs

services.AddSingleton<IConfigurationManager, ConfigurationManager>();
ConfigurationManager configurationManager = new ConfigurationManager();
services.AddDbContext<MyContext>(options => 
    options.UseSqlServer(configurationManager.DatabaseConnectionString));
Run Code Online (Sandbox Code Playgroud)

因此,为了创建我的上下文,我需要它configurationManager提供给我的连接字符串。但是,我仍然想保留ConfigurationManager即服务。

有没有一种方法可以在不显式实例化的情况下执行此操作,configurationManager或者是否可以像这样保留它?

c# dependency-injection dbcontext entity-framework-core asp.net-core

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

ASP.NET Core 流 - 将块写入请求

这是更新的问题,我的代码中曾经有一个错误

我希望能够将数据块发送给客户端。

任何事情都会受到赞赏。

有没有办法为 ASP.NET 核心提供更多控制它如何流式传输数据的方法。

我很担心下面的代码是如何缩放的。

有人可以建议如何通过asp.net core中的web api流式传输数据吗?

提供的答案和下面的代码有效。我不确定它是如何扩展的?

是否可以检索数据块并将它们写入请求,只需将数据块放入内存中。所以我将能够下载非常大的文件。

using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    return File(System.IO.File.OpenRead(filePath), "audio/mpeg");
}
Run Code Online (Sandbox Code Playgroud)

c# rest request filestream asp.net-core

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

在运行复制数据活动之前从目标表中删除数据

我正在尝试创建一个在某些 Oracle 数据库之间移动数据的管道。我已成功创建并测试了复制数据活动。我的问题是我想在“复制”运行之前清空目标表,但我看不到这样做的方法(现在它将数据附加到表中)。

起初我尝试使用存储过程活动,但它只支持与 SQL Server 相关的源。数据工厂提供的其他活动均不适用于此用例。即使是通用的“执行 SQL”活动也可以为我工作,但似乎没有类似的活动可用。

编辑:我在下面发布了一个答案,但这并不理想。如果您认为您有更好的解决方案,请发布答案!

sql oracle azure azure-data-factory

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

空通用类型c#

public class Node<E> : IPosition<E>
{
    private E element;
    public Node<E> PrevNode { get; set; }
    public Node<E> NextNode { get; set; }

    //Constructor
    public Node(E e, Node<E> p, Node<E> n)
    {
        element = e;
        PrevNode = p;
        NextNode = n;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有上面的Node类,当我创建一个新的节点对象时,我想要这样做:

Node<E> n = new Node<E>(null, null, null);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为所有类型都不能为空.让我感到惊讶的是,当我在Java中尝试类似的东西时,它是有效的.我在Stack Overflow上看到了一些相关的问题,但是他们没有给出我想要的结果.我不想用default(E).

c# generics null

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

列表删除和除外行为不同

我正在尝试从另一个 C# 字符串列表中减去一个 C# 字符串列表。我使用两个单独的解决方案,当我查看原始列表计数并减去列表计数数量和结果时,两者都没有意义。

每个解决方案的结果都会发生变化,并且两者都没有给出正确的数字。

解决方案1:

  • 原始列表计数: 2398 , tempListUnifier ,这是一个 C# 字符串列表
  • 移除列表计数:930,移除列表,这是一个 C# 字符串列表
  • 结果:1365

    var result = tempListUnifier.Except(removalList);
    
    Run Code Online (Sandbox Code Playgroud)

解决方案2:

  • 原始列表计数: 2398 , tempListUnifier ,这是一个 C# 字符串列表
  • 移除列表计数:930,移除列表,这是一个 C# 字符串列表
  • 结果:1481

    var result = tempListUnifier;
    
    foreach(string item in removalList)
    {
        result.Remove(item);
    }
    
    Run Code Online (Sandbox Code Playgroud)

我想知道为什么我在两种解决方案中得到不同的结果?其实我想得到真正的结果,即 2398 - 930 = 1468 。这怎么可能?

c# list

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

awk for 循环未将数组索引设置为正确的值

我有这个小的地理位置数据集。

37.9636140,23.7261360
37.9440840,23.7001760
37.9637190,23.7258230
37.9901450,23.7298770
Run Code Online (Sandbox Code Playgroud)

从一个随机位置。例如,37.97570, 23.66721 我需要使用 awk 创建一个 bash 命令,该命令返回具有简单欧几里德距离的距离。这是我使用的命令

awk -v OFMT=%.17g -F',' -v long=37.97570 -v lat=23.66721 '{for (i=1;i<=NR;i++) distances[i]=sqrt(($1 - long)^2 + ($2 - lat)^2 ); a[i]=$1; b[i]=$2} END {for (i in distances) print distances[i], a[i], b[i]}' filename
Run Code Online (Sandbox Code Playgroud)

当我运行这个命令时,我得到了这个不正确的奇怪结果,有人可以向我解释我做错了什么吗?

? awk -v OFMT=%.17g -F',' -v long=37.97570 -v lat=23.66721 '{for (i=1;i<=NR;i++) distances[i]=sqrt(($1 - long)^2 + ($2 - lat)^2 ); a[i]=$1; b[i]=$2} END {for (i in distances) print distances[i], a[i], b[i]}' filename                     

44,746962127881936 37.9440840 23.7001760
44,746962127881936 37.9901450 …
Run Code Online (Sandbox Code Playgroud)

linux arrays settings awk for-loop

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