更新相关实体ASP.NET Boilerplate

时间:2018-04-25 15:49:09

标签: ef-code-first aspnetboilerplate

我刚开始使用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;
    }
}

您知道如何使用此框架的当前实现来实现这一目标吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议你需要重新建模,因为你有deletetreeAddress->Person。这不容易处理。

如果是我,我只会在Person上有一个Address属性,即Person.Address并使用外键attrib。 FK Att意味着保存更改地址的人员也会跟踪地址变更并自动保存。

如果单个地址可以与&gt;相关联1人然后您还可以选择在Address类上添加导航属性,以便您可以移动到与单个地址关联的所有人员,例如Person->Address

如果不使用外键属性,则将其视为独立关联 - 因此在状态管理器/更改跟踪器中作为单独的对象处理。