"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 这样的:
我想知道是否可以在 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 这样的: