背景:我有一个性能关键的查询,我想运行,我不关心脏读.
我的问题是; 如果我正在使用连接,我是否必须在这些上指定NOLOCK提示?
例如; 是:
SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b WITH (NOLOCK) ON a.ID = b.ID
Run Code Online (Sandbox Code Playgroud)
相当于:
SELECT * FROM table1 a WITH (NOLOCK)
INNER JOIN table2 b ON a.ID = b.ID
Run Code Online (Sandbox Code Playgroud)
或者我是否需要(NOLOCK)在连接上指定提示以确保我没有锁定连接表?
一点背景:我目前使用Memcached Providers来管理ASP.NET应用程序中的会话状态.它提供了使用SQL Server作为回退存储机制的工具(当需要从memcached缓存中清除会话时).我想看看为RavenDB创建一个提供程序,因为它对于这类任务会更高效.
我的问题是,有没有人实施这样的事情?(或类似的东西?) - 我讨厌重新发明轮子.谷歌没有产生任何有用的结果(除了我在RavenDB组本身中的这个问题),所以我想我会直接把这个问题带到Stack Overflow社区.
我使用NHibernate和Memcached作为二级缓存,并且一直对cache.use_minimal_puts配置选项感到好奇.
根据文件:
hibernate.cache.use_minimal_puts:优化二级缓存操作以最小化写入,但代价是更频繁的读取.此设置对于群集缓存最有用,并且在Hibernate3中,默认情况下为群集缓存实现启用.
为了清楚起见,我没有在集群环境中运行Memcached,但它确实在远程计算机上运行.另一个需要考虑的因素可能是读取和写入Memcached之间的速度是否存在任何重大差异.
cache.use_minimal_puts在这种情况下,我能从中受益吗?
在我的ASP.NET MVC 2 Web应用程序中,我允许用户创建不同数据类型的自定义输入字段以扩展我们的基本输入表单.虽然很棘手,但是从一组自定义字段构建输入表单非常简单.
但是,我现在要处理这个表单的发布,我不确定处理这个问题的最佳方法是什么.通常,我们使用强类型输入模型,它们受到表单上可用的各种静态类型输入的约束.但是,对于如何使用表示不同数据类型的可变数量的输入字段,我感到很茫然.
代表性输入表单可能类似于:
我想过的想法是:
有没有人之前处理过这样的问题?如果是这样,你是如何解决的?
更新:
我的"基础"表单一起处理在另一个输入区域,因此解决方案不需要为此考虑任何类型的继承魔法.我只对处理这个界面上的自定义字段感兴趣,而不是我的"基础"字段.
更新2:
感谢ARM和smartcaveman; 你们俩都为如何做到这一点提供了很好的指导.一旦实施,我将用我的最终解决方案更新这个问题.
任何人都可以指向我在javascript中的排序算法,其排序方式与SQL Server相同(对于nvarchar/unicode列)?
作为参考,我可以在此处找到有关此行为的上一个问题:SQL Server 2008 - VARCHAR与NVARCHAR值的不同排序顺序
而不是试图改变服务器端的排序行为,有没有办法在客户端匹配这个?我之前的问题专门讨论了排序顺序中的破折号,但是我会假设它还有一点点,而不是简单地忽略破折号作为排序的一部分.
我在这里添加了一些额外的用例来更好地演示这个问题
从SQL Server(2008)排序的示例数据:
?test
^&$Grails Found
bags of Garbage
Brochures distributed
Calls Received
exhibit visitors
Exhibit Visitors
-Exhibit Visitors
--Exhibit Visitors
Ëxhibit Visitors
Grails Found
Run Code Online (Sandbox Code Playgroud)
如何让javascript以相同的方式对相同的值进行排序?
如果我可以进一步澄清,请告诉我.
有谁知道.NET的通用电话号码解析库?理想情况下,我正在寻找类似于Ruby Phone库的东西.
以下在c#中工作正常(假设value是object):
if (value is DateTime)
Run Code Online (Sandbox Code Playgroud)
什么是VB.NET的等效检查?
有没有办法以编程方式填充asp.net输出缓存?我已经调查了缓存API,似乎找不到明显的方法来做到这一点.有没有人尝试过这样的东西?如果是这样,你使用了什么方法?
考虑以下代码:
Dim sql = "SELECT * FROM MyTable WHERE value1 = @Param1"
If someCondition Then
sql = sql + " AND value2 = @Param2"
End If
Dim cmd As New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@Param1", param1Value)
cmd.Parameters.AddWithValue("@Param2", param2Value)
Run Code Online (Sandbox Code Playgroud)
假设我动态构建了一个复杂的 sql 语句,该语句可能包含也可能不包含@Param2参数 - 将其作为参数添加到命令中是否有任何危害?
我的实际用例显然比这复杂得多,但总的来说,这是我应该避免的模式吗?如果是这样,为什么?
我目前正在使用Castle Windsor版本2.1作为我的容器,并希望使用注册的服务执行集成测试.
目前,我使用Common Service Locator来检索我的服务实例并对其执行集成测试:
var myService = ServiceLocator.Current.GetInstance<IMyService>();
// do stuff with myService
Run Code Online (Sandbox Code Playgroud)
我理想的做法是将我的服务依赖项自动注入我的NUnit测试夹具.Spring似乎提供了这个功能,但我无法使用Castle找到类似的东西.
谁能指出我正确的方向?
编辑:
我相信每个人都有(有效)的观点,这是否是一个好主意; 让我们姑且认为它是在这种情况下......谁能告诉我如何可以使用温莎实现呢?
integration-testing nunit dependency-injection castle-windsor
asp.net ×3
sql-server ×3
.net ×1
ado.net ×1
asp.net-mvc ×1
c#-to-vb.net ×1
caching ×1
formatting ×1
hibernate ×1
javascript ×1
memcached ×1
nhibernate ×1
nolock ×1
nosql ×1
nunit ×1
outputcache ×1
phone-number ×1
ravendb ×1
session ×1
sorting ×1
sql ×1
unicode ×1
vb.net ×1
viewmodel ×1