2011-08-16 24 views
7

Actualmente estoy usando Entity Framework 4 con el CTP de junio de 2011 (para soporte enum) y estoy teniendo dificultades para insertar una estructura en una clase persistente. Tengo una clase Patient con un campo InclusionCriteria estructura (entre otros):¿Es posible almacenar los campos de una estructura en la misma tabla que la clase contenedora?

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

    ... 
} 

La estructura es bastante simple, con los campos primitivos:

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

    ... 
} 

Después de ejecutar el sistema, se hizo evidente que los de estructura los datos no se estaban guardando Cuando veo la tabla generada, la estructura no está allí (como una clave externa u otra). Me gustaría que los campos de la estructura se ubicaran en la tabla Patient, por lo que no he hecho un DbSet para los criterios. Podría hacer esto, pero preferiría mantener todo en la misma mesa. ¿Es esto posible en el marco de la entidad?

Respuesta

7

Las estructuras no son compatibles. Debe usar la clase y asignarla como tipo complejo. Si usa el primer acercamiento de código, puede tratar de hacerlo de clase y simplemente recrear la base de datos; si tiene suerte, se mapeará automáticamente como tipo complejo. De lo contrario, puede utilizar la anotación de los datos:

[ComplexType] 
public class InclusionCriteria { ... } 

o API fluida:

modelBuilder.ComplexType<InclusionCriteria>(); 

Si está utilizando EDMX sigue this article para crear tipo complejo y this article a usarlo.

Btw. CTP 2011 es solo para probar nuevas funciones, no para el desarrollo real. Su contenido puede cambiar en el próximo CTP.

+0

¡Gracias! Aparentemente, la palabra clave que estaba buscando era de tipo complejo. Estaba usando un strcut para asegurarme de que nunca fue 'nulo', pero supongo que usaré los métodos habituales. – 101100

Cuestiones relacionadas