我们在我们的应用程序中使用Dapper和Dapper.Contrib。我们选择Dapper它是因为它更快,而且由于负载较重,速度对我们来说就是一切。现在看来“更改字段跟踪”对我们来说至关重要。现在Dapper.Contrib创建update始终设置所有字段的查询,这样的查询会使它们变慢。一些表现在有大约 30 列,并且完全更新该表中的行效率非常低。
据我所知,Dapper.Contrib有Change tracking per object,但Change tracking per field没有被引入图书馆。
我非常仔细地进行了研究,发现该领域还没有开展任何工作。那个不幸的研究让我感到困惑。我想听听您的想法:
假设我有StartCommandHandler责任创建一些包含所需文件的文件。但为了做到这一点,我必须赋予他一系列子职责,例如:
由于该命令处理程序,我们正在创建包含所有必需文件的文件夹。现在该文件夹已准备好进行其他操作。
我刚刚读过"Art of the Unit testing"。并开始添加单元测试。SOLID我也遵循原则。特别是SRP和DIP,我认为这是单元测试的先决条件。所以,我上面所说的大部分事情都是通过特定的接口完成的。因此,该命令处理程序 90% 的工作是调用依赖项的方法。10%是这样的逻辑:
if(!_dependency1.IsAnySomething())
{
_dependency2.Download();
var isScriptNeeded = _dependency2.IsScriptNeeded();
if(isScriptNeeded)
{
var res = _dependency3.ExecuteScript();
_dependency4.SetScriptResult(res.Info, res.Date, res.State);
}
_dependency3.Archive();
_dependency5.DeleteTemp();
}
Run Code Online (Sandbox Code Playgroud)
我已经测试了该命令处理程序的所有依赖项。但是,帽子命令处理程序还包括一些小逻辑,例如是否需要下载文件,或者是否删除临时文件等等......
我脑子里有很多问题,比如:
DeleteTemp下载后是否调用,或者脚本是否执行,或者脚本结果以正确的方式传递给方法SetScriptResult。这是好的单元测试吗?我已经在.net core(控制台应用程序)中创建了这样的n层体系结构:
Company.App
-> reference to Company.Services
-> reference to Company.Infrastructure
Company.Services
-> reference to Company.Infrastructure
+ IWorkStarter
+ WorkStarter - (ExternalClient is injected)
Company.Infrastructure
+ RabbitMqConsumer - (IWorkStarter must be injected) - Cyclic dependency
+ IExternalClient
Run Code Online (Sandbox Code Playgroud)
如您所见,Services已经有对的引用Infrastructure。而且我也必须IWorkStarter在兔子用户内部使用。似乎我没有必要的知识来以正确的方式分离这些组件。请你帮助我好吗?该项目非常简单。
c# architecture dependency-injection n-tier-architecture .net-core
我有这样的情绪:
foreach (var item in listBoxFileNames.SelectedItems)
{
MessageBox.Show("I am not waiting");
CancellationTokenSource tokenSourcve = new CancellationTokenSource();
CancellationToken token = tokenSourcve.Token;
Task task1 = new Task(() =>
{
ProcessDatas(); // method
}
, token);
task1.Start();
}
Run Code Online (Sandbox Code Playgroud)
我想让foreach等待任务的完成.不要等待.它会在每个messagBox之后立即显示MessageBox.
c# ×4
.net-core ×2
.net ×1
architecture ×1
dapper ×1
foreach ×1
java ×1
testing ×1
unit-testing ×1