"N + 1选择问题"通常被称为对象关系映射(ORM)讨论中的一个问题,我理解它必须为对象中看起来很简单的事情做出大量的数据库查询.世界.
有没有人对这个问题有更详细的解释?
我在我的global.asax中有一个常规异常处理程序Application_error,我试图在所有页面中隔离所有未捕获的异常.我不想使用Page_error来捕获异常,因为在很多页面上调用它是低效的.那么在异常中哪里可以找到实际导致异常的页面?
我们有一个系统,我们希望阻止为两个不同的帐户注册相同的信用卡号.由于我们不在内部存储信用卡号码 - 只是最后四位数字和到期日期 - 我们不能简单地比较信用卡号码和到期日期.
我们目前的想法是在注册卡时在我们的信用卡信息系统中存储散列(SHA-1),并比较散列以确定之前是否使用过卡.
通常,使用salt来避免字典攻击.我认为在这种情况下我们很容易受到攻击,因此我们应该将哈希值与哈希一起存储起来.
你们看到这种方法有什么缺陷吗?这是解决这个问题的标准方法吗?
我即将开发一个程序,该程序将作为Windows服务在几个客户端的后端服务器(具有Internet访问权限)上安装和运行.我没有物理访问服务器.我正在研究的是一个可靠地推出程序更新的方案.
我花了很多时间寻找Windows服务自动更新的最佳实践,但却找不到有用的信息.大多数技术,如ClickOnce,似乎主要适用于基于Windows窗体的应用程序.
我目前的计划是:
对我来说一些重要的问题是:
我们想知道的是,这是解决这个问题的常用方法和/或我是否遗漏了任何关键问题.这太复杂了,还是太简单了?你会怎么做(或者,更好的是,你是如何成功完成的)?
谢谢!
我有以下代码(为了讨论而简化).我不明白的是为什么session.Transaction属性在回滚后返回不同的事务.
例如,这意味着该属性Session.Transaction.WasRolledBack几乎没有帮助,除非我存储对第一个事务的引用并检查该事务的属性.
任何人都可以提供一些见解吗?
int transId = session.Transaction.GetHashCode();
using (var tx = session.BeginTransaction())
{
Assert.AreEqual(transId, tx.GetHashCode());
tx.Rollback();
Assert.AreEqual(transId, tx.GetHashCode());
Assert.AreEqual(transId, session.Transaction.GetHashCode()); // Fails
}
Run Code Online (Sandbox Code Playgroud)
更新:
David Walschots的回答非常有用且精确.另外,我在Nhibernate文档中找到了以下内容:
如果你回滚事务,你应该立即关闭并放弃当前会话,以确保NHibernate的内部状态是一致的."
我有一个针对.NET 3.5的程序集.
我有一个针对.NET 2.0的应用程序,并想知道我是否应该从2.0应用程序引用3.5程序集时遇到任何问题.
我知道IL应该是相同的,所以我假设它会起作用,但是想听听其他人试过这个的经验.
运行时环境将同时安装2.0和3.5.
.net ×1
.net-2.0 ×1
.net-3.5 ×1
asp.net ×1
assemblies ×1
auto-update ×1
c# ×1
credit-card ×1
cryptography ×1
exception ×1
hash ×1
nhibernate ×1
orm ×1
reference ×1
transactions ×1