假设我有一个名为的对象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 会为我处理所有子记录?
我尝试创建一个新属性,以便可以将属性标记为级联保存更新,但如果我在 Apply 方法上放置断点,它似乎永远不会被命中。
public class CascadeSaveUpdateAttribute : Attribute {
}
public class CascadeSaveUpdateConvention :
AttributeCollectionConvention<CascadeSaveUpdateAttribute>
{
protected override void Apply(CascadeSaveUpdateAttribute attribute, ICollectionInstance instance)
{
instance.Cascade.SaveUpdate();
}
}
我该怎么做才能让这个 Cascade Save 功能正常工作?