小编Arm*_*our的帖子

实体框架异步方法是否使用 ThreadPool 线程?

我通常EF Core在我的 Web 应用程序中使用许多异步方法,如下所示:

await db.Parents.FirstOrDefaultAsync(p => p.Id == id);
Run Code Online (Sandbox Code Playgroud)

我们知道,ThreadPool默认情况下,初始线程数仅限于 CPU 逻辑内核数。用户请求也由ThreadPool.

由于应用程序中有许多异步调用,我是否应该担心处理用户请求或性能问题?

c# asp.net entity-framework threadpool async-await

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

如何在桌面应用程序中使用 DbContext 和 DI?

我一直在研究几个非 Web 应用程序,Entity Framework并且一直在努力寻找实现的正确方法Generic Repository使用 DbContext。

我搜索了很多,很多文章都是关于具有短暂上下文的 Web 应用程序。在桌面方法中,我找不到合适的方法。

一种方法是 DbContext per ViewModel但我不同意将 View 与 Repository 层耦合。

另一种是这样使用using子句:

using(var context = new AppDbContext())
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但是这样我们就不会Unit of Work也不能使用IoC Containers.

那么在桌面应用程序中使用 DbContext 的最佳实践是什么?

c# wpf entity-framework dependency-injection .net-core

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

HttpClient 查询偶尔挂起

我这样初始化HttpClient

public static CookieContainer cookieContainer = new CookieContainer();
public static HttpClient httpClient = new HttpClient(new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate, CookieContainer = cookieContainer }) { Timeout = TimeSpan.FromSeconds(120) };
Run Code Online (Sandbox Code Playgroud)

所以TaskCanceledException如果在 120 秒内没有收到响应,所有查询都应该抛出。但是某些查询(例如 1 of 100 000-1 000 000)会无限挂起。

我写了以下代码:

public static async Task<HttpResponse> DownloadAsync2(HttpRequestMessage httpRequestMessage)
{
    HttpResponse response = new HttpResponse { Success = false, StatusCode = (int)HttpStatusCode.RequestTimeout, Response = "Timeout????????" };
    Task task;
    if (await Task.WhenAny(
        task = Task.Run(async () =>
        {
            try …
Run Code Online (Sandbox Code Playgroud)

c# timeout httpclient async-await

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

在存储库服务中检索用户 http 数据

我目前正在构建一个应用程序,其中每个用户都有一个存储在用户会话存储中的唯一密钥。此密钥用于解密数据库中的用户数据。由于应用程序的存储库层处理数据库查询(使用 Dapper),我希望在那里进行解密。

现在的问题是:我可以从会话存储中检索用户密钥,将其传递给控制器​​,然后传递给服务,然后在链接的每个方法中使用名称为“key”的参数传递给存储库。有没有办法将密钥从控制器传递到存储库层,而不必在每次调用中手动包含密钥?

如果有比将它存储在会话存储中更好的解决方案,我愿意接受它,如果它能让这更容易。

我遵循的加密系统如下(来自另一个 SO 答案): 加密机制

c# repository asp.net-core

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

在 C# 中用 &lt;br/&gt; 替换 \n

我在将 \n 转换为 < br/> 时遇到问题。我要转换的文本是test\ntest\n\ntest 我希望它像test<br />test<br /><br />test. 所以每个 \n 都需要替换为<br />.

现在我正在使用此代码:

Regex regex = new Regex(@"(\n)+");
string ticketCategorieOmschrijving = regex.Replace("test\ntest\n\ntest", "<br />");
Run Code Online (Sandbox Code Playgroud)

但是此代码替换\n\n为单个<br />,而它需要<br /><br />

有人可以帮忙吗?

html c#

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

Linq 中具有多个表和 LEFT OUTER JOIN 的复杂联接

希望有人能通过这次加入为我指明正确的方向。我正在尝试将一些 SQL 转换为 Linq。我的 SQL 在几个内连接之后有一个左外连接。以下 SQL 产生所需的结果:

SELECT TOP(50) [t].[TagFriendlyName] AS [TagName], [t0].[timeStamp] AS [LastSeen], [l].[Name] AS [LocationName]
FROM [Tags] AS [t]
INNER JOIN [tag_reads] AS [t0] ON [t].[epc] = [t0].[epc]
INNER JOIN [ReaderData] AS [r] ON [t0].[ReaderDataId] = [r].[Id]
LEFT OUTER JOIN [Readers] AS [r0] ON [r].[mac_address] = [r0].[mac_address]
INNER JOIN [Locations] AS [l] on [t0].[antennaPort] = [l].[AntennaId] AND [r].[Id] = [l].[ReaderId]
GROUP BY [t].[TagFriendlyName], [t0].[timeStamp], [l].[Name]
ORDER BY [t0].[timeStamp] DESC 
Run Code Online (Sandbox Code Playgroud)

我的 Linq 代码如下,但我不知道如何正确插入左外连接。不知道如何引入需要 LEFT OUTER JOIN 的 …

c# linq sql-server entity-framework-core

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

Entity Framework Core 是否适合高负载 Web 应用程序?

请考虑以下假设:

  1. 我有一个高流量的 Web 应用程序,数据库表中有数百万条记录。
  2. 假设我足够了解EF以及如何以最佳方式正确使用它。
  3. EF由于其兼容性OOP和易用性,我更喜欢在我的应用程序中使用。

我知道EF(即使使用最佳实践)与Dapperor相比有一些性能下降ADO.NET

但我的问题是,根据我的假设,这个性能问题是相当大的还是我可以EF在我的高流量 Web 应用程序中安全使用?

c# entity-framework entity-framework-core

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