我像这样测量代码速度:
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()?
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) 我在路由中提供了一个 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 我的内容是:
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 中提取内容?
在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) System.Web.Mvc.ActionDescriptor具有方法IsDefined,该方法有助于确定是否为此成员定义了指定属性类型的一个或多个实例。
System.Web.Http.Controllers.HttpActionDescriptor没有此方法。
如何使用HttpActionDescriptor 检查AllowAnonymousAttribute?
我有没有ID的产品清单(300万件) - 只有标题.但我不知道DB中已存在哪些标题.必须在DB中添加新产品(约290万件).之后,我必须知道每种产品(新的和现有的)的ID.
在PostgreSQL中有最快的方法吗?我可以根据需要更改数据库(添加默认值,添加列等).
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) 有字节数组:{0,0,0,0,52,246,141,6}
它以某种方式表示为字符串:AAAAADT4RyQ =
怎么做?什么是编码器?
c# ×7
sql ×3
asp.net-core ×2
bulk ×1
converter ×1
database ×1
decoder ×1
encoder ×1
exception ×1
httpclient ×1
httpcontent ×1
insert ×1
linq2db ×1
load-testing ×1
post ×1
postgresql ×1
security ×1
signalr-hub ×1
t-sql ×1
temp-tables ×1