Почему ActiveRecordHooksBase.OnUpdate не работает в каскадном режиме? - PullRequest
0 голосов
/ 12 июля 2010

Предположим, у нас есть две сущности Blog и Post, которые Blog имеют много Post с.Post сохраняется косвенно через Blog.Когда я переопределяю OnUpdate в Post, это вызывает сохранение Post s, которые имеют ноль Blog.С другой стороны, переопределение OnUpdate в Post приводит к неправильному сохранению.У кого-то еще была такая же проблема .

Код:

protected override void OnUpdate()
{
    UserModified = "UserModified";
    DateModified = DateTime.Now;

    base.OnUpdate();
}

1 Ответ

0 голосов
/ 13 июля 2010

Нашел обходной путь сам.Если явно установить патент на детей, это сработает.Рассмотрим следующий код:

[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();
}
...