我一直试图在Ayende的博客之后做一个非常简单的审计场景,这似乎是每个人在IPreUpdateEventListener和IPreInsertEventListener时所引用的资源.
然而,无论我怎么努力,我都无法让它发挥作用.事件正确启动,当我通过它时一切看起来都没问题,但是我的"更改时间"没有更新到数据库.
我花了大约一天google搜索这一点,并终于找到了答案在这里.
当您使用dynamic-update ="true"映射实体时,它将无法工作.果然,对我来说就是这样.既然我很难找到这条信息,那么使用dynamic-update ="true"是不常见的?我们在所有实体上使用它.
由于这对我们来说是一个重大障碍,我想问一下这有什么办法吗?
我一直在关注IInterceptor,但它总是被认为是过时的,那么这有什么缺点呢?另外,我还没有找到一个关于如何使用IInterceptor进行相同审计(使用插入/更新时间戳)的非常好的教程(我对NHibernate相当新).
任何帮助,将不胜感激!
在我的应用程序中,我有一个静态类(单例),需要使用我的层中使用的一些环境变量进行初始化,我将其称为applicationContext.这反过来又有客户和用户的背景.
每个作业运行时,它会根据情况修改这些客户和用户上下文.我遇到的问题是当两个作业同时发生时它们可能会覆盖彼此的上下文,因此我需要为每个正在运行的作业保留多个用户和客户上下文,我需要能够通过某种方式能够看到正确的上下文目前的工作是什么.
有可能以某种方式获取有关当前正在执行的quartz.net工作的信息吗?
我正在设想这样的东西,其中"currentQuartzJob.Name"组成并且是我缺少的部分:
public class MyContextImpl : IApplicationContext {
private Dictionary<string,subContexts> allCustomerContexts;
public string CurrentContext
{
get { return allCustomerContexts[currentQuartzJob.Name] };
}
Run Code Online (Sandbox Code Playgroud)
}
编辑:
我认为不可能做我想做的事,那就是能够在一个不了解Quartz.Net的类中获得执行作业的名称.
我真正需要的是为每项工作保留不同背景的方法.我设法通过查看执行线程的ID来实现这一点,因为它们似乎对于每个正在运行的作业都不同.
我正在尝试以正确的方式记录我的代码.
我有一个方法可以抛出特定类型的FaultException.当我查看该方法的文档时,它不显示FaultException的特定类型.
///<summary>
/// Description of method
///</summary>
/// <exception cref="FaultException{ValidationFault}">Description here</exception>
OrganizationDto Update(UpdateOrganizationRequest organizationDto);
Run Code Online (Sandbox Code Playgroud)
文档显示:FaultException <TDetail>:这里的描述
我希望它显示:FaultException <ValidationFault>:这里的描述
我怎样才能做到这一点?
我一直在研究在我公司的应用程序中使用 webauthn 进行 MFA。当我开始研究它时,它看起来非常合适,并且我对我们的用户能够使用手机作为身份验证器的前景感到非常兴奋。
然而,一位拥有 iPhone 的同事向我指出,当他在https://webauthn.io/上尝试示例应用程序时,他无法选择他的 iPhone,并且只能选择将 Android 手机添加到他的帐户。和我们的许多用户一样,他在 Windows 计算机上使用 Chrome,但拥有 iPhone 12。
对我来说,这种情况不被支持似乎是不可想象的?许多用户使用 Windows 并拥有 iOS 设备。我错过了一些明显的东西吗?
当我使用HQL或Linq(Session.Query)获取内容时,我有一个NHibernate没有使用我的映射配置来急切加载集合的问题.Session.Get和Session.QueryOver正如预期的那样工作.
我正在使用NHibernate 3.2.这是我的产品映射中集合的映射.
<bag name="OrderItems" inverse="true" cascade="none" lazy="false" fetch="join">
<key column="order_id" />
<one-to-many class="OrderItem" />
</bag>
Run Code Online (Sandbox Code Playgroud)
从另一边看,映射看起来像这样:
<many-to-one name="Product" class="Product" column="product_id" not-null="true" />
Run Code Online (Sandbox Code Playgroud)
我有4个测试,2个是成功的,2个不是.他们使用Session.SessionFactory.Statistics来跟踪CollectionFetchCount(在1个连接查询中或在单独的查询中选择了OrderItem).目的是在选择产品时选择并加载OrderItem,因为几乎总是访问OrderItems.
LastCreated是对插入数据库的最后一个产品的简单引用.
[Test] /* Success */
public void Accessing_Collection_Using_Session_Get_Results_In_1_Select()
{
// Get by Id
var product = Session.Get<Product>(LastCreated.Id);
var count = product.OrderItems.Count;
Assert.AreEqual(0,statistics.CollectionFetchCount,"Product collectionfetchcount using Get");
}
[Test] /* Success */
public void Accessing_Collection_Using_Session_QueryOver_Results_In_1_Select()
{
// Get by Id
var product = Session.QueryOver<Product>().SingleOrDefault();
var count = product.OrderItems.Count;
Assert.AreEqual(0, statistics.CollectionFetchCount, "Product collectionfetchcount using QueryOver");
}
Run Code Online (Sandbox Code Playgroud)
[Test] /* Fail …Run Code Online (Sandbox Code Playgroud) nhibernate ×2
c# ×1
comments ×1
generics ×1
hql ×1
linq ×1
multi-factor-authentication ×1
quartz.net ×1
queryover ×1
webauthn ×1