我目前正在使用 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/