Question

Hé les gars, j'essaie de créer une cartographie TPH sur une hiérarchie où la clause de discrimination est le cas classique "n'est pas nul" / "est nul".

Voici l'exemple, la base de données:

CREATE TABLE info.EducationTypes
(
   ID INT NOT NULL PRIMARY KEY,
   Name NVARCHAR(64) NOT NULL,
   FKParentID INT NULL REFERENCES info.EducationTypes(ID)
)

L'idée est d'avoir une hiérarchie de classe comme la suivante:

public abstract class EducationType
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class MainEducationType : EducationType
{
    public IEnumerable<SubEducationType> SubTypes { get; set; }
}

public class SubEducationType : EducationType
{
    public MainEducationType MainType { get; set; }
}

J'ai obtenu ce schéma "fonctionnant" dans le modèle XML classique, mais je ne trouve vraiment pas de moyen de le faire fonctionner en utilisant l'approche du code First. C'est ce que j'ai essayé ...

var educationType = modelBuilder.Entity<EducationType>();
educationType.Map<MainEducationType>(m => m.Requires("FKParentID").HasValue(null));
educationType.Map<SubEducationType>(m => m.Requires("FKParentID"));

Avez-vous une suggestion?

Était-ce utile?

La solution

Malheureusement, avoir une valeur nulle pour la colonne de discriminatrice dans le mappage TPH n'est pas actuellement pris en charge dans CTP5. Ceci est confirmé par l'équipe EF sur ici et aussi ici. Ils le regardent pour voir s'ils peuvent le faire fonctionner pour le RTM.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top