3

Company次のように表されるというオブジェクトがあるとします。

public class Company
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual Address Address { get; set; }
}

public class Address
{
    public virtual int Id { get; set; }
    public virtual string Line1 { get; set; }
    public virtual string Line2 { get; set; }
    public virtual string Line3 { get; set; }
    public virtual string Town { get; set; }
    public virtual string County { get; set; }
    public virtual string Postcode { get; set; }
    public virtual double Longitude { get; set; }
    public virtual double Latitude { get; set; }
}

新しい会社を作成するときに、新しい住所も作成したいと考えています。現時点では、住所レコードを作成してから会社レコードを個別に作成することによってのみ、これを機能させることができます。

    [HttpPost]
    public ActionResult Add(Company company)
    {
        _addressRepo.Create(company.Address);
        _companyRepo.Create(company);
        return RedirectToAction("Index");
    }

(ここで、_addressRepo と _companyRepo はそれぞれ型IRepository<Address>と型IRepository<Company>です)

すべての子オブジェクトをカスケード保存するにはどうすればよいですか? 理想的には、 を呼び出すと_companyRepo.Create(company);、Orchard がすべての子レコードを処理してくれるのでしょうか?

プロパティを Cascade Save Update としてマークできるように新しい属性を作成しようとしましたが、Apply メソッドにブレークポイントを設定すると、ヒットしないように見えます。

public class CascadeSaveUpdateAttribute : Attribute {
}

public class CascadeSaveUpdateConvention :
    AttributeCollectionConvention<CascadeSaveUpdateAttribute>
{

    protected override void Apply(CascadeSaveUpdateAttribute attribute, ICollectionInstance instance)
    {
        instance.Cascade.SaveUpdate();
    }
}

このカスケード保存機能を機能させるにはどうすればよいですか?

4

0 に答える 0