为了账号安全,请及时绑定邮箱和手机立即绑定

在 EF Core 中分解结构?

在 EF Core 中分解结构?

C#
慕桂英4014372 2021-11-07 19:03:20
假设我有以下课程:struct Vector{    public float X { get; set; }    public float Y { get; set; }    public float Z { get; set; }}class Player{    public string Name { get; set; }    public Vector Position { get; set; }}我如何在实体框架(核心)中配置它,使其映射到 Name、PositionX、PositionY、PositionZ?这是用于代码生成目的,所以我不希望用户必须在考虑 EF 的情况下创建他们的 POCO(它也可以发送到很多其他语言!)
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

目前(EF Core 3)不支持。但是,有一个关于它的 GitHub 问题,看起来 structs-as-owned-types 已被未来版本接受:

https://github.com/dotnet/efcore/issues/9906


查看完整回答
反对 回复 2021-11-07
?
长风秋雁

TA贡献1757条经验 获得超7个赞

正在寻找同样的东西,并遇到了这个问题。以为我会发布我发现的内容:EF Core 团队建议将其作为 JSON 存储在您的数据库中并使用自定义值转换器:


modelBuilder.Entity<Order>()

    .Property(e => e.Vector)

    .HasConversion(

        v => JsonSerializer.Serialize(v, null),

        v => JsonSerializer.Deserialize<Vector>(v, null));

虽然不理想。


查看完整回答
反对 回复 2021-11-07
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

对于 Entity Framework Core,您所描述的称为拥有实体


配置是这样的:


modelBuilder.Entity<Player>()

    .OwnsOne(p => p.Position);


查看完整回答
反对 回复 2021-11-07
  • 3 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信