我刚开始使用ASP.NET Boilerplate,我想要做的是自动更新实体及其相关实体。例如,当我更新Person实体时,我希望地址也被更新。以下是我如何定义实体:
public class Person : FullAuditedEntity<long>, IMayHaveTenant, IPassivable
{
public const int MaxFirstNameLength = 256;
public const int MaxLastNameLength = 256;
[MaxLength(MaxFirstNameLength)]
public string FirstName { get; set; }
[MaxLength(MaxLastNameLength)]
public string LastName { get; set; }
public bool IsActive { get; set; }
public int? TenantId { get; set; }
public Address Address { get; set; }
public Person()
{
CreationTime = Clock.Now;
}
}
public class Address : FullAuditedEntity<long>, IMayHaveTenant, IPassivable
{
public string Street1 { get; set; }
public string Street2 { get; set; }
public virtual long? PersonId { get; set; }
[ForeignKey("PersonId")]
public virtual Person Person { get; set; }
public bool IsActive { get; set; }
public int? TenantId { get; set; }
public Address()
{
CreationTime = Clock.Now;
}
}
您知道如何使用此框架的当前实现来实现这一目标吗?
谢谢!
答案 0 :(得分:0)
我建议你需要重新建模,因为你有deletetree
和Address->Person
。这不容易处理。
如果是我,我只会在Person上有一个Address属性,即Person.Address并使用外键attrib。 FK Att意味着保存更改地址的人员也会跟踪地址变更并自动保存。
如果单个地址可以与&gt;相关联1人然后您还可以选择在Address类上添加导航属性,以便您可以移动到与单个地址关联的所有人员,例如Person->Address
如果不使用外键属性,则将其视为独立关联 - 因此在状态管理器/更改跟踪器中作为单独的对象处理。