entity-framework - 是否可以将结构体的字段存储在与包含类相同的表中?

标签 entity-framework

我目前正在使用 Entity Framework 4 和 2011 年 6 月的 CTP(用于枚举支持),并且在将结构嵌入到持久类中时遇到困难。我有一个带有 InclusionCriteria 结构字段(以及其他)的 Patient 类:

public class Patient
{
    public InclusionCriteria inclusionCriteria
    {
        get;
        set;
    }

    ...
}

该结构相当简单,具有原始字段:

public struct InclusionCriteria
{
    public bool withStemi
    {
        get;
        set;
    }

    ...
}

运行系统后,很明显该结构的数据没有被保存。当我查看生成的表时,该结构不存在(作为外键或其他形式)。我希望结构体的字段位于 Patient 表中,因此我没有为条件创建 DbSet 。我可能会这样做,但我宁愿将它们全部放在同一个表中。这在 Entity Framework 中可能吗?

最佳答案

不支持结构。您必须使用类并将其映射为复杂类型。如果您使用代码优先方法,您可以尝试使其成为类并简单地重新创建数据库 - 如果幸运的话它将自动映射为复杂类型。否则,您可以使用数据注释:

[ComplexType]
public class InclusionCriteria { ... } 

或流畅的 API:

modelBuilder.ComplexType<InclusionCriteria>(); 

如果您使用 EDMX,请按照 this article 创建复杂类型,然后按照 this article 使用它。

顺便说一句。 CTP 2011仅用于测试新功能,不用于真正的开发。其内容可以在下一个CTP中改变。

关于entity-framework - 是否可以将结构体的字段存储在与包含类相同的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085182/

相关文章:

entity-framework - 获取当前用户 Blazor webassembly 的 UserId

c# - 使用 linq 获取逗号分隔的实体集合列表

wcf - 通过 WCF 公开实体

c# - 将类型转换为引用类型

entity-framework - EF5 视觉设计更新但模型不是

c# - EF 或 SQL 是审计数据更改的更好选择吗?

C# webapi 异步上下文问题

c# - 第二个结果集返回空值 - linq toEntity

c# - Entity Framework 6.x 在添加模型时不添加表值参数

c# - Entity Framework 代码优先 : Doesn't load referenced object