在为聚合重放事件时,您如何将Apply
这些事件发送到子(非根)实体.
到目前为止,我有两个关于如何解决这个问题的想法.
你采取了哪些方法,哪些方法有效,哪些无效?
在我的搜索中,我只发现了两个讨论问题的链接(两者都采用了第一种方法):
给定具有FSharp样式函数的接口.
type IUseless =
abstract member Listify: string -> int -> string list
Run Code Online (Sandbox Code Playgroud)
你会如何嘲笑这个功能?
let substitute = NSubstitute.Substitute.For<IUseless>()
substitute.Listify.Returns(??? what would even go here ???)
Run Code Online (Sandbox Code Playgroud)
我不希望能够像普通方法一样模拟它,或者包含函数的值(虽然这就是它代表的东西).
所以我很好奇是否有人使用典型的.NET模拟库成功模拟了FSharp函数.
使用该ForEach-Object
功能时,有没有办法提供function
而不是code block
.
这将使我能够简化:
@(1, 2, 3, 4) | % { Add-One $_ }
Run Code Online (Sandbox Code Playgroud)
对此,或类似:
@(1, 2, 3, 4) | % Add-One
Run Code Online (Sandbox Code Playgroud)
为了完整性,这里是Add-One
函数的当前定义
function Add-One($Number) {
return $Number + 1
}
Run Code Online (Sandbox Code Playgroud)
编写一个函数process
来做类似的事情很容易,如下所示:
@(1, 2, 3, 4) | Add-One
Run Code Online (Sandbox Code Playgroud)
但是,这意味着您必须重新实现循环和ValueFromPipeline
每个函数,而不是重用ForEach-Object
已提供的函数.所以简而言之,有一种方法可以使用标量函数ForEach-Object
,避免将其包装在Code Block
?
我想简化在Azure中创建后台任务的人.
在asp.net应用程序中,后台任务一直很困难.对于简单的场景,您可以定期调用URL或启动后台线程.这两个选项都存在问题,两者都远非理想.例如,在调用URL时,对请求可以运行的时间量有限制,它会中断与工作单元的请求关联,并且您需要在应用程序中管理外部组件.对于后台线程,它有点好,但IIS仍然是一个请求驱动的服务,并且在实现重复的后台任务时存在危险.目前正在开展工作以支持IIS本地的后台任务,但这仍然是在遥远的未来.今天推荐的方法是使用Windows服务,这很好,因为它不是PAAS,没有理由不使用整个服务器.
Azure在后台任务方面面临着类似的问题,简单的任务很容易,但如果你想要更大的任务,你就会一直跳到工作者角色.然而,即使你使用这些方法,他们仍然有一些问题.
可以使用Azure移动服务任务计划运行简单任务,但即使是那些也存在一些问题.比如任务长时间运行.它还意味着您在主应用程序中拥有一半的任务逻辑,一半以脚本的形式管理其余的工作.我想要一个可以在一个地方停留的后台服务.
工人角色在大多数时候都是公平的太重量级,坦率地说,他们通常是矫枉过正.当我更愿意通过网站和服务共享一个VM时,它们需要一个完整的专用虚拟机.然后,如果需要,可以独立扩展它们.
我认为azure需要第三种选择.使用可在共享或保留/标准环境中运行的PAAS部署服务的能力.这应该与当前的Azure网站完全相同,因为它可以在共享模式下运行,也可以在我在Azure中托管的其他网站上运行.然后,该服务和我的网站可以在一个虚拟机中运行,以实现具有成本效益的阶段性或尽可能多的专用虚拟机.
所以我有两个问题:
今天这样做的最佳方式是什么,有没有我错过的选择?
Azure是否会在未来添加这样的服务?
在 TSql 中,对包含空值的数据进行分组的推荐方法是什么?
查询类型示例:
Select Group, Count([Group])
From [Data]
Group by [Group]
Run Code Online (Sandbox Code Playgroud)
看来count(*) 和count(Group) 都会导致显示 的空组0
。
预期表数据示例:
Id, Group
---------
1 , Alpha
2 , Null
3 , Beta
4 , Null
Run Code Online (Sandbox Code Playgroud)
预期结果示例:
Group, Count
---------
Alpha, 1
Beta, 1
Null, 0
Run Code Online (Sandbox Code Playgroud)
这是可以通过 count(Id) 获得的期望结果。这是获得此结果的最佳方法吗?为什么count(*) 和count(Group) 返回“不正确”的结果?
Group, Count
---------
Alpha, 1
Beta, 1
Null, 2
Run Code Online (Sandbox Code Playgroud)
编辑:我不记得为什么我认为 count(*) 这样做了,这可能是我正在寻找的答案..