是否可以将struct的字段存储在与包含类相同的表中?

101*_*100 9 entity-framework

我目前正在使用Entity Framework 4和2011年6月的CTP(用于枚举支持),并且我很难在持久化类中嵌入结构体.我有一个Patient带有InclusionCriteriastruct字段的类(以及其他):

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

结构非常简单,具有原始字段:

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

运行系统后,很明显结构的数据没有被保存.当我查看生成的表时,结构不存在(作为外键或其他).我想结构的字段位于Patient表中,所以我没有DbSet为标准做出.我可能会这样做,但我宁愿把它全部放在同一张桌子上.这在实体框架中是否可行?

Lad*_*nka 7

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

[ComplexType]
public class InclusionCriteria { ... } 
Run Code Online (Sandbox Code Playgroud)

或流利的API:

modelBuilder.ComplexType<InclusionCriteria>(); 
Run Code Online (Sandbox Code Playgroud)

如果您正在使用EDMX,请按照本文创建复杂类型和本文来使用它.

顺便说一句.CTP 2011仅用于测试新功能,而不用于实际开发.它的内容可以在下一个CTP中改变.