如何在 EF Core 中设计仅指向一个方向的一对一关系

How to design one to one relationship in EF Core that points only in one direction

我正在尝试使用 EF Core 3 设计非常简单的数据库模型,但我在处理非常简单的关系时遇到了问题。

我有类:客户、文件和地址。

public class Customer
{
    public int Id { get; set; }

    public Address Address { get; set; }
}

public class Document
{
    public int Id { get; set; }

    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }

    public string Street { get; set; }

    public string City { get; set; }
}

所以我想在不同的实体中使用通用地址。

我正在尝试按照以下方式对其进行建模:

public void Configure(EntityTypeBuilder<Customer> builder)
{
    builder.HasKey(f => f.Id);
    builder.HasOne(f => f.Address).WitMany().IsRequired().OnDelete(DeleteBehavior.Cascade);
}

public void Configure(EntityTypeBuilder<Document> builder)
{
    builder.HasKey(f => f.Id);
    builder.HasOne(f => f.Address).WitMany().IsRequired().OnDelete(DeleteBehavior.Cascade);
}

public void Configure(EntityTypeBuilder<Address> builder)
{
    builder.HasKey(f => f.Id);
    builder.Property(f => f.Street);
    builder.Property(f => f.City);
}

但问题是,当我的文档附有地址时,我尝试删除该文档时,地址不会被删除。出于某种原因,地址是文档的主体。

如何建立这种关系的模型?我不能在 Address 实体中使用导航 属性,因为 Address 可以在多个不同的实体中用作地址的通用表示形式。

谢谢 Ivan 指出这是不可能的。我会听从 Gerd 的建议使用自有类型。