2011-09-12 28 views

Respuesta

86

La columna Discriminator se utiliza y es necesaria en Table-Per-Hierarchy escenarios de herencia. Si, por ejemplo, tiene un modelo como este ...

public abstract class BaseEntity 
{ 
    public int Id { get; set; } 
    //... 
} 

public class Post : BaseEntity 
{ 
    //... 
} 

public class OtherEntity : BaseEntity 
{ 
    //... 
} 

... y hacer la parte BaseEntity del modelo, por ejemplo mediante la adición de un DbSet<BaseEntity> a su contexto derivada, Entity Framework trazará un mapa de esta jerarquía de clases por predeterminado en una sola tabla, pero introduzca una columna especial - Discriminator - para distinguir entre los diferentes tipos (Post o OtherEntity) almacenados en esta tabla. Esta columna se rellena con el nombre del tipo (de nuevo Post o OtherEntity).

+0

Gracias por la buena respuesta. Sin embargo, mi modelo no se deriva. ¿Por qué EF todavía hace el discriminador? – kasperhj

+0

@lejon: ¿Puedes mostrar el modelo en tu pregunta? Nunca he visto una columna 'Discriminador' más que en un contexto de herencia. Mi código de arriba es solo un ejemplo. Obtendrás lo mismo, por ejemplo, si 'Post' en sí no se deriva, pero si hay otras entidades derivadas de 'Post'. – Slauma

+0

¡Ya veo! Otro modelo derivado de Post. ¡Gracias por responder! – kasperhj

Cuestiones relacionadas