首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在EF核心中分解结构?

在EF核心中分解结构?
EN

Stack Overflow用户
提问于 2018-07-31 03:06:34
回答 3查看 1.7K关注 0票数 7

假设我有以下类:

代码语言:javascript
复制
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?

这是为了代码生成的目的,所以我不希望用户在创建他们的POCO时必须考虑EF (它也会向许多其他语言发出!)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-31 03:56:54

对于实体框架核心,您所描述的内容称为owned entities

其配置类似于:

代码语言:javascript
复制
modelBuilder.Entity<Player>()
    .OwnsOne(p => p.Position);
票数 -4
EN

Stack Overflow用户

发布于 2020-08-06 00:26:43

目前(EF Core 3)不支持。然而,有一个关于它的GitHub问题,看起来结构即拥有类型在未来的版本中已经被接受:

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

票数 3
EN

Stack Overflow用户

发布于 2021-03-29 21:35:01

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

代码语言:javascript
复制
modelBuilder.Entity<Order>()
    .Property(e => e.Vector)
    .HasConversion(
        v => JsonSerializer.Serialize(v, null),
        v => JsonSerializer.Deserialize<Vector>(v, null));

不过,这并不理想。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51600685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档