我的问题可能看起来很简单,但我被这个问题困扰了一段时间。
代码控制器:
[Route("api/ReceiptOrders/{receiptOrderNo}/[controller]")]
[ApiController]
public class ReceiptPositionsController : ControllerBase
{
[HttpPost("{orderNo}")]
public async Task<IActionResult> PostReceiptOrderPositions(
[FromBody] IEnumerable<ReceiptPositionForCreationDto> receiptPositions)
{
var receiptOrder = await _repositoryManager.ReceiptOrder.GetReceiptOrderByOrderNoAsync(receiptOrderNo, false);
//More code here...
}
}
Run Code Online (Sandbox Code Playgroud)
网址:https://localhost:7164/api/ReceiptOrders/RO-20220731-4/ReceiptPositions
我的问题是:如何获取 ReceiptOrderNo(在本例中为 RO-20220731-4)?我需要它来填充“GetReceiptOrderByOrderNoAsync”方法。
我使用 .Net Core 编写了一个非常简单的 Windows 应用程序,它生成一个包含 1000 条记录的 IEnumerable。在以下示例代码中,我的 IEnumerable 返回正确的记录,而第二行代码返回 null。
IEnumerable<test> myList = null;
myList = from item in myTable select ....();
var result = myList.ToList(); //myList has 1000 records
int total = myList.Count(); //myList is null
Run Code Online (Sandbox Code Playgroud)
我不明白为什么myList不持久化而改为null. 看起来好像用过一次就被冲掉了。
请看下面的真实代码:
using var dbContextTransation = _context.Database.BeginTransaction();
try
{
IEnumerable<BuoyLocation> positionList = null;
var allPosition = csvReader.GetRecords<MyFormat>();
positionList =
from location in allPosition
select new Location()
{
LocationDateTime = location.Fecha.Add(new TimeSpan( Convert.ToInt32( location.Hora.Left(2) ), Convert.ToInt32( location.Hora.Right(2) …Run Code Online (Sandbox Code Playgroud) 我正在使用以这种方式创建构建器的库
var webApiOptions = new AkaAppOptions<ApiOptions>(ApplicationId, authenticationType);
var builder = new AkaAppBuilder<ApiOptions>(args, webApiOptions);
Run Code Online (Sandbox Code Playgroud)
现在这个构建器包含IConfiguration我需要的。
我的问题是我需要阅读配置才能知道authenticationType它是什么类型。这发生在我有一个WebApplicationBuilder.
我的选择是创建临时的WebApplicationBuilder,读取配置,然后创建这个库生成器,我猜这里的缺点是内存。
另一种选择是手动读取appsettings.json以获取该信息/缺点是内存和内存环境应用程序设置?
读哪一篇
例如,我会做这样的事情来创建临时构建器,而不是我需要的构建器
var tempBuilder = WebApplication.CreateBuilder(args);
var useExternalAuth = tempBuilder.Configuration.GetSection("ExternalAuth").Exists();
var authenticationType = useExternalAuth ? AuthenticationType.ExternalService : AuthenticationType.Service;
var webApiOptions = new AkaAppOptions<ApiOptions>(ApplicationId, authenticationType);
var builder = new AkaAppBuilder<ApiOptions>(args, webApiOptions);
Run Code Online (Sandbox Code Playgroud)
还有其他选择吗?
Visual Studio 显示编译器警告CS04721,其中(int)5 == null读取
表达式的结果始终为“false”,因为“int”类型的值永远不等于“int”类型的“null”?
bool x = (int)5 == null;
Run Code Online (Sandbox Code Playgroud)
DateTime但是,如果使用对象,则不会发出警告。
bool y = DateTime.UtcNow == null;
Run Code Online (Sandbox Code Playgroud)
由于DateTimeis not Nullable<DateTime>,因此它永远不可能为 null 。第二个语句没有显示类似警告的原因是什么?
我想以一种直白的方式演示这个异步示例:
Thing[] stuff = await Context.Things
.Where(a => true)
.ToArrayAsync();
Console.WriteLine("Beep");
Run Code Online (Sandbox Code Playgroud)
将以与同步版本不同的顺序执行:
Thing[] stuff = Context.Things
.Where(a => true)
.ToArray();
Console.WriteLine("Boop");
Run Code Online (Sandbox Code Playgroud)
我想表明第二个版本始终在打印输出之前创建数组,而第一个版本的执行情况可能有所不同。
不知道该怎么做,显然很清楚。
我想知道我们应该使用的确切位置IEnumberable<T>
我知道如何IEnumerable<T>工作和返回IEnumerator<T>以及所有这些,但最终目标IEnumerable<T>是从集合中查询数据不是吗?这就是我们已经可以使用 foreach() 循环做到的事情吗?那么什么时候使用IEnumerable<T>呢?IEnumerable<T>查询集合的唯一选项的实际场景是什么?
我有一个 ASP.NET Core Web API 返回ReconResults. 由于某种原因,API 没有向我发送对象的消息部分。我在离开 API 之前看到消息的值。我确信我错过了一些非常愚蠢的东西。
模型:
public class ReconResults
{
public IEnumerable<int> ReconIds { get; set; }
public IEnumerable<ReconErrorResults> Messages { get; set; }
public bool Success { get; set; }
}
public class ReconErrorResults
{
int ErrNo { get; set; }
string ErrorMessage { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
回购协议:
using (var connection = sqlProvider.GetConnection())
{
var aresults = connection.QueryMultipleAsync("recon.usp_pro",
parameters,
commandTimeout: 1500,
commandType: CommandType.StoredProcedure).Result;
results.Messages = await aresults.ReadAsync<ReconErrorResults>();
results.ReconIds = await aresults.ReadAsync<int>(); …Run Code Online (Sandbox Code Playgroud) 我在创建在 URL 中传递的加密字符串时遇到问题。我在解密后得到不正确的字符或错误。“输入数据不是一个完整的块”
这是我的类来加密和解密我的字符串:
public static class StringCipher
{
public static string Encrypt(string s)
{
return AesProvider(s, (aes, raw) =>
{
using var ms = new MemoryStream();
using (var cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(raw, 0, raw.Length);
}
return Encoding.UTF8.GetString(ms.ToArray());
});
}
public static string Decrypt(string s)
{
return AesProvider(s, (aes, raw) =>
{
using var ms = new MemoryStream();
using (var cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(raw, 0, raw.Length);
}
return Encoding.UTF8.GetString(ms.ToArray());
});
}
private …Run Code Online (Sandbox Code Playgroud) 我想在 .NET Core 中构建一个 Web API 项目,并且我是 .NET Core 的完全初学者。
我已经安装了这个.NET 7 SDK。我有 Visual Studio 2019,当我尝试创建新项目时,我在目标框架的下拉列表中没有看到 .NET Core 7。
我检查了控制面板,它显示:
我已经有了 .NET core 2.1.802,这也显示在 Visual Studio 中。但 .NET 7 未显示。
我是否下载了错误的版本或者此 SDK 不包含 .NET Core。我对此有点困惑。
有人可以向我解释一下吗?
多谢。
我有以下代码。创建实例的两行TestClass失败并显示错误。
我预计第一个会失败,因为所需的属性未初始化。但是,第二个调用一个构造函数来初始化所需的属性。为什么那个会失败呢?
什么是属性构造函数?
void Main()
{
TestClass test1 = new(); // <== Error CS9035 Required member 'TestClass.Name' must be set in the object initializer or attribute constructor
TestClass test2 = new(""); // <== Error CS9035 Required member 'TestClass.Name' must be set in the object initializer or attribute constructor
}
class TestClass
{
public required string Name { get; set; }
public TestClass()
{
}
public TestClass(string name)
{
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud) .net-core ×10
c# ×10
.net ×2
asp.net ×2
asp.net-core ×2
.net-6.0 ×1
aes ×1
async-await ×1
encryption ×1
ienumerable ×1