Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改列表元素的属性时创建修订_C#_Nhibernate_Nhibernate Envers - Fatal编程技术网

C# 更改列表元素的属性时创建修订

C# 更改列表元素的属性时创建修订,c#,nhibernate,nhibernate-envers,C#,Nhibernate,Nhibernate Envers,假设我有以下实体: public class Group { public IList<Item> Items { get; set; } } public class Item { public Group Group { get; set; } public string Name { get; set; } } 公共类组 { 公共IList项{get;set;} } 公共类项目 { 公共组组{get;set;} 公共字符串名称{get;set

假设我有以下实体:

public class Group
{
    public IList<Item> Items { get; set; } 
}

public class Item
{
    public Group Group { get; set; } 

    public string Name { get; set; } 
}
公共类组
{
公共IList项{get;set;}
}
公共类项目
{
公共组组{get;set;}
公共字符串名称{get;set;}
}
现在,我希望Envers在
项目
名称
属性发生更改时,为
创建一个修订。如果我更改集合(顾名思义;-)本身,则更改集合上的
revision\u\u\u change
属性就可以工作

是否可以将Envers设置为将父实体与其子元素属性的属性“连接”起来?

简短回答: 没有

详细回答:
根据您的用例,有可能适合您需求的替代方案。请确保您的组实体在其中一个项目被修改时会被修改,或者在查询组时包含修改后的项目(后者可能需要双向关系)。

触发器是您的朋友。触发器是什么,在哪里定义它们?我在Envers文档中找不到任何东西。我确信他指的是数据库触发器-您配置数据库以执行的代码,它由各种事件触发。例如,您可以添加一个触发器,每当项目更改插入到审核表中时触发该触发器,然后审核表也会插入相应的组更改。谢谢您的回答。这种关系已经是双向的了。你能给我一个提示,如何在查询时包含修改项的修订吗?罗杰,我仍在寻找这个问题的解决方案。你能帮帮我吗?正如我所说,埃弗斯不支持这一点。但是,您当然可以确保每次子对象被修改时,父对象总是被修改的(或者是侦听器/事件侦听器,或者是在您的域模型中修复它)。或者,您也可以查询子版本以获取其已更改的修订,然后使用这些修订号查询父版本。