小编Yuv*_*hap的帖子

EntityFramework核心单元测试 - SQLite内存模式与InMemory提供程序

我正在为使用EntityFramework Core的项目编写单元测试,并根据我可以使用的文档SQLite in-memory modeThe InMemory provider近似数据库上下文.

文档声明SQLite in-memory mode行为类似于关系数据库,The InMemory provider并且总是表现得像关系数据库.

据我所知,SQLite模式听起来更好,因为它的行为类似于关系型数据库,而InMemory提供者却没有,但我想还有其他方面需要考虑,否则没有人会使用The InMemory provider哪种声音更糟糕.

在选择使用哪种工具之前,我应该考虑每种方法的其他优缺点吗?

c# unit-testing entity-framework-core .net-core

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

为什么我更喜欢使用 API 异步功能而不是用 Task.Run 包装同步功能?

我知道这段代码之间有区别:

var streamWriter = new StreamWriter("something.txt");
streamWriter.WriteAsync("text");
Run Code Online (Sandbox Code Playgroud)

和这个:

var streamWriter = new StreamWriter("something.txt");
Task.Run(()=> streamWriter.Write("text"));
Run Code Online (Sandbox Code Playgroud)

第一个更有意义。

在不同的情况下,当我等待结果时,此代码:

var streamReader = new StreamReader("something.txt")
char[] chars = new char[10];

Task<int> task = streamReader.ReadAsync(chars, 0, chars.Length);
//Do something...

int num = await task;
//Do something with num...
Run Code Online (Sandbox Code Playgroud)

比这更有意义:

var streamReader = new StreamReader("something.txt")
char[] chars = new char[10];

Task<int> task = Task.Run(()=>streamReader.Read(chars, 0, chars.Length));
//Do something...

int num = await task;
//Do something with num...
Run Code Online (Sandbox Code Playgroud)

我想使用内置的异步 API 不仅在清晰度上更好,而且它实际上ThreadPool比让ThreadPool线程无故等待更好、更有效地管理线程。

这样对吗?

c# asynchronous threadpool task-parallel-library async-await

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