小编Fir*_*ock的帖子

执行前预编译C#方法

我像这样测量代码速度:

var sw = new Stopwatch();
sw.Start();
DoSomething();
sw.Stop();
AddLog("Method speed is (ms): "+sw.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)

但是DoSomething()的第一次调用很慢,因为代码正在编译.解决方法是测量第二次调用的速度,如下所示:

var sw = new Stopwatch();
DoSomething();
sw.Start();
DoSomething();
sw.Stop();
AddLog("Method speed is (ms): "+sw.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)

是否可以在没有第一次调用的情况下预编译DoSomethig()?

c# load-testing

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

在一个原子操作中通过 linq2db 检查更新行

MS SQL 数据库表具有时间戳字段,该字段的值在更新行后发生变化。在更新之前,我想检查该行是否从其他服务更改。

我可以通过将内存中对象的时间戳值与数据库表中的值进行比较来做到这一点。

我可以通过linq2db在一个原子操作中完成它吗?

它无需检查即可工作:

db.Update(product);
Run Code Online (Sandbox Code Playgroud)

这三个查询不起作用:

db.Products.Where(p => p.timestamp == product.timestamp).Update(p => p, product);
db.Products.Update(p => p.timestamp == product.timestamp, p => product );
db.Where<DB, Product, DB>(p => p.timestamp == product.timestamp).Update(product);
Run Code Online (Sandbox Code Playgroud)

我想像这样执行sql脚本:

update Products
set ...-- all fields
where Id = @id and Timestamp = @timestamp
Run Code Online (Sandbox Code Playgroud)

c# sql database linq2db

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

将路由和正文中的多个参数绑定到 ASP.NET Core 中的模型

我在路由中提供了一个 ID(“.../api/mobile/registers/192” - 192 是 ID),并在 PUT 请求正文中提供了其余参数。如何将它们绑定到具有所有参数的模型?问题是ID没有映射,它总是0:

\n
[HttpPut("registers/{id}")]\npublic async Task ModifyPaymentRegister(PaymentRegisterModifyRequestVm model)\n{\n    var result = await financeService.ModifyPaymentRegisterAsync(model, CurrentUserId.Value);\n    ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n
    [BindProperties(SupportsGet = true)]\n    public class PaymentRegisterModifyRequestVm\n    {\n        /// <summary>\n        /// \xd0\x98\xd0\xb4\xd0\xb5\xd0\xbd\xd1\x82\xd0\xb8\xd1\x84\xd0\xb8\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd1\x80 \xd1\x80\xd0\xb5\xd0\xb5\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\n        /// </summary>\n        [FromRoute]\n        public int Id { get; set; }\n\n        /// <summary>\n        /// \xd0\x9e\xd0\xbf\xd0\xb8\xd1\x81\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 \xd1\x80\xd0\xb5\xd0\xb5\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\n        /// </summary>\n        [FromBody]\n        public string Description { get; set; }\n\n        /// <summary>\n        /// \xd0\xa2\xd0\xb8\xd0\xbf \xd0\xbc\xd0\xbe\xd0\xb4\xd0\xb8\xd1\x84\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8 \xd1\x80\xd0\xb5\xd0\xb5\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\n        /// </summary>\n        [FromBody]\n        public PaymentModifyType ModifyType { get; set; }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

c# model-binding asp.net-core

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

从 HttpClient 的 FormUrlEncodedContent 中提取内容数据

我的内容是:

var content = new Dictionary<string, string>
{
    {"pickup_date", pickupDate.ToString("dd.MM.yyyy HH:mm")},
    {"to_city", "Victoria"},
    {"delivery_company", "4"},
    {"shop_refnum", parameters.Reference},
    {"dimension_side1", "20"},
    {"dimension_side2", "20"},
    {"dimension_side3", "20"},
    {"weight", "5"}
};

var httpContent = new FormUrlEncodedContent(content);
Run Code Online (Sandbox Code Playgroud)

如何从 httpContent 中提取内容?

c# post httpclient httpcontent

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

处理 Asp.Net Core 3.1 中 SignalR 集线器中的所有异常

在Web API中,所有异常都可以通过中间件来处理。在 Asp.Net Core 5.0 中,集线器过滤器将完成这项工作。

但是如何在 SignalR 集线器中处理 Asp.Net Core 3.1 中的异常呢?有没有唯一的方法可以在每个方法中编写 try/catch ,如下所示?

[Authorize]
public class OrdersHub : BaseHub
{
        public async Task GetOrder(Guid requestId, int orderId)
        {
            try
            {
                var data = await ordersService.GetOrderAsync(orderId);
                await Clients.Caller.SendAsync("GetOrderResult", requestId, result);
            }
            catch (Exception ex)
            {
                await Clients.Caller.Reject(requestId, ex);
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

c# exception signalr-hub asp.net-core asp.net-core-signalr

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

在Web API中检查AllowAnonymousAttribute

System.Web.Mvc.ActionDescriptor具有方法IsDefined,该方法有助于确定是否为此成员定义了指定属性类型的一个或多个实例。

System.Web.Http.Controllers.HttpActionDescriptor没有此方法。

如何使用HttpActionDescriptor 检查AllowAnonymousAttribute

c# security authentication asp.net-web-api

4
推荐指数
2
解决办法
1718
查看次数

如何批量插入PostreSQL中的新行

我有没有ID的产品清单(300万件) - 只有标题.但我不知道DB中已存在哪些标题.必须在DB中添加新产品(约290万件).之后,我必须知道每种产品(新的和现有的)的ID.

在PostgreSQL中有最快的方法吗?我可以根据需要更改数据库(添加默认值,添加列等).

sql postgresql insert bulk duplicate-removal

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

如何更新#temptable

CREATE TABLE #TempProducts (
    Id uniqueidentifier,
    ManufacturerId uniqueidentifier,
    Number varchar(50),
    PresentId uniqueidentifier null)
Run Code Online (Sandbox Code Playgroud)

如何更新 PresentId 字段?我在这方面有不同的错误:

1) 数据库中已有一个名为“#TempProducts”的对象。

UPDATE #TempProducts
SET #TempProducts.PresentId = p.Id
FROM #TempProducts JOIN Products p ON (#TempProducts.ManufacturerId = p.ManufacturerId AND #TempProducts.Number = p.Number)
WHERE #TempProducts.Id <> p.Id
Run Code Online (Sandbox Code Playgroud)

2) 无法绑定多部分标识符“t.PresentId”。

UPDATE #TempProducts
SET t.PresentId = p.Id
FROM #TempProducts t JOIN Products p ON (t.ManufacturerId = p.ManufacturerId AND t.Number = p.Number)
WHERE t.Id <> p.Id
Run Code Online (Sandbox Code Playgroud)

sql t-sql temp-tables

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

将byte []转换为字符串,如"AAAAADT4RyQ ="

有字节数组:{0,0,0,0,52,246,141,6}

它以某种方式表示为字符串:AAAAADT4RyQ =

怎么做?什么是编码器?

c# encoder converter decoder

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