"sub-models" 和 Entity Framework 有可能吗?

Is it possible to have "sub-models" with Entity Framework?

我想知道是否可以在 Entity Framework 实体模型中包含“子模型”?

例如,这个:

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

   public UserPermissions Permissions { get; set; }
}

public class UserPermissions
{
   public bool CanRead { get; set; }

   public bool CanWrite { get; set; }
}

那么在实际的table中,会有这些列:

Id
CanRead
CanWrite

甚至可以使用前缀,例如:

Id
Perm_CanRead
Perm_CanWrite

是这样吗?您可能知道其他选择吗?或者我最好的选择是使用 base/abstract class 之类的 public class User : UserPermissions { }?

是的,这在 EF Core 中可以通过使用拥有的实体来实现。 docs 解释得很好,但是,例如,你可以这样:

[Owned]
public class StreetAddress
{
    public string Street { get; set; }
    public string City { get; set; }
}

public class Order
{
    public int Id { get; set; }
    public StreetAddress ShippingAddress { get; set; }
}

或者如果您更喜欢使用流利的 API:

modelBuilder.Entity<Order>().OwnsOne(p => p.ShippingAddress);

这会给你一个 table 这样的: