小编Jen*_*son的帖子

带有"动态"参数名称的IN语句的Dapper AddDynamicParams

我有这样简单的SQL字符串:

"SELECT * FROM Office WHERE OfficeId IN @Ids"
Run Code Online (Sandbox Code Playgroud)

问题是@Ids名称是在编辑器中输入的,所以它可以是任何东西,我的问题是如果我想传入,比如一个整数数组,它只适用于Dapper如果我使用:

var values = new DynamicParameters();
values.AddDynamicParams(new { Ids = new[] { 100, 101 } });
Run Code Online (Sandbox Code Playgroud)

但这需要我知道参数名称是什么Ids,而在我的场景中并非如此.

我可以在Dapper中设置一个"动态参数",其名称为"动态",如下所示:

var values = new DynamicParameters();
values.Add("Ids", new[] { 100, 101 });
Run Code Online (Sandbox Code Playgroud)

但是,然后Dapper不IN (....)为每个值构造具有单独参数的SQL.

有没有办法构建传入的动态对象,AddDynamicParams但事先设置成员名称和值而不知道名称?

我可以修改Dapper源以适应我的场景,但如果有人知道一个更简单和优雅的解决方案,我会很高兴!

c# c#-4.0 dapper

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

连接到多个集线器,仅与一个集线器断开连接

我正在用Durandal编写单页应用程序,我正在计划使用SignalR来实现某些功能.首先,我有一个顶部栏,用于侦听服务器可能发送的通知.该站点开始连接到"TopBarNotificationHub".

在其中一个页面上,我想连接到另一个集线器,因为两个用户可能同时编辑此页面上的数据,我想通知是否有人更新了数据.没问题,这很好用.

但是,当离开那个页面时,我想要断开第二个集线器的连接,但我找不到实现这个目标的方法.如果我只是说hub.connection.stop(); 与eTopBarNotificationHub的连接也会停止(因为它已共享).

有没有办法只留下一个hubproxy并让另一个存在?

由于这是一个SPA,所以"shell"永远不会重新加载,因此它不会再次连接到集线器......我可能会强制每次重新连接另一个页面与集线器断开连接,但可能有一个更清洁的解决方案. ..

提前致谢.

∥焦

signalr

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

标签 统计

c# ×1

c#-4.0 ×1

dapper ×1

signalr ×1