【问题标题】:Why ActiveRecordHooksBase.OnUpdate does not work in cascaded mode?为什么 ActiveRecordHooksBase.OnUpdate 在级联模式下不起作用?
【发布时间】:2010-07-13 14:37:58
【问题描述】:
假设我们有两个实体Blog 和Post,其中Blog 有很多Posts。 Post 通过Blog 间接保存。当我在Post 中覆盖OnUpdate 时,它会导致保存具有空Blog 的Posts。另一方面,在Post 中覆盖OnUpdate 会导致无法正确保存它。其他人have had same problem。
代码是:
protected override void OnUpdate()
{
UserModified = "UserModified";
DateModified = DateTime.Now;
base.OnUpdate();
}
【问题讨论】:
标签:
c#
orm
castle-activerecord
castle
【解决方案1】:
自己找到了解决方法。如果明确设置儿童专利,它将起作用。考虑以下代码:
[ActiveRecord(Lazy = true)]
public class Lookup : ActiveRecordBase<Lookup>
{
[HasMany(typeof(LookupItem), Cascade = ManyRelationCascadeEnum.All)]
public virtual IList Items { set; get; }
//other properties...
}
[ActiveRecord(Lazy = true)]
public class LookupItem : ActiveRecordBase<LookupItem>
{
[BelongsTo("Lookup_id")]
public virtual Lookup ContainerLookup { set; get; }
//other properties...
}
void SaveLookup()
{
Lookup lookup = GetLookup();
LookupItem lookupItem = new LookupItem()
{
Title = LookupItemName,
ContainerLookup = lookup
};
lookup.Items.Add(lookupItem);
lookup.Save();
}