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();
}
}
このカスケード保存機能を機能させるにはどうすればよいですか?