我正在开发一个将大型VB6应用程序转换为.NET的项目.我决定创建一个项目来为现有的VB6 ADO代码提供一个外观,我使用了令人惊奇的Dapper扩展方法来处理VB6 ADO函数用来做的所有数据库代码.
我必须在我的新项目中支持的功能之一是能够从T-SQL存储过程(通过FOR XML)获取XML字符串结果.Dapper没有支持返回我能看到的XML.所以,我实现了ADO.NET ExecuteXmlReader方法来提供这种返回.我的项目还使用Dapper DynamicParameters来捕获存储过程所需的所有输入/输出参数.
我没有看到怎么做,是如何转换DynamicParameters为,SqlCommand.SqlParameterCollection以便我可以将这些参数填充到方法的SqlCommand对象中ExecuteXmlReader.我还必须支持此方案的输出参数.
我可以遍历DynamicParameters,但只能获取参数名称和值.我还需要方向,类型,大小,比例和精度.Dapper有一个DynamicParameters.ReplaceLiterals方法,它接受一个IDbCommand对象来替换SQL字符串中的文字.我希望它有一个方法来填写参数.
我错过了一些明显的东西吗?如果我调用Dapper Execute方法,我可以DyanmicParameters直接将其传递给此方法.我只是没有看到如何将它们传递给SqlCommand对象.
使用用 C# 编写的 ASP.NET Core 6 Web API 和最少的 API,我想返回数据流,而无需先将数据加载到内存中。就我而言,这是由 Apache Spark 编写的 JSONL(JSON 行)数据。JSONL 是一种基于文本的格式。
下面的代码设置了这Content-Type: application/json对于我的用例来说是不正确的。设置此类型然后用数组包装整个内容,并在所有引号的地方添加转义反斜杠字符。
相反,它应该设置Content-type: text/plain保留行的原始格式,并允许该端点的使用者一次流式传输和处理一行,而无需将整个响应正文加载到客户端的内存中。
是否可以content-type在保留流的同时更改此设置Transfer-Encoding: chunked,并且不解析或修改我从 .jsonl 文件中读取的行内容?
app.MapGet("/stream/data", () =>
{
async IAsyncEnumerable<string> Stream()
{
using (StreamReader file = new StreamReader(filePath))
{
while (!file.EndOfStream)
{
yield return await file.ReadLineAsync() ?? string.Empty;
}
}
}
return Stream();
});
Run Code Online (Sandbox Code Playgroud)