Utilisation du code EF 4.0 uniquement Je souhaite faire une association entre une classe abstraite et une classe normale.EF 4.0 Affectation de code uniquement de l'abstrait au dérivé
J'ai la classe 'Item', 'ContentBase' et 'Test'. 'ContentBase' est abstrait et 'Test' en dérive. 'ContentBase' a une propriété 'Item' qui lie à une instance de 'Item'.
Pour que 'Test.Item' ou toute classe dérivée de 'ContentBase' ait une propriété de navigation 'Item'.
Dans ma base de données, chaque enregistrement de test possède un enregistrement correspondant pour l'élément.
public class Item
{
public int Id { get; set;}
}
public abstract class ContentBase
{
public int ContentId { get; set;}
public int Id { get; set;}
public Item Item { get; set;}
}
public class Test : ContentBase
{
public string Name { get; set;}
}
maintenant un code d'initialisation
public void SomeInitFunction()
{
var itemConfig = new EntityConfiguration<Item>();
itemConfig.HasKey(p => p.Id);
itemConfig.Property(p => p.Id).IsIdentity();
this.ContextBuilder.Configurations.Add(itemConfig);
var testConfig = new EntityConfiguration<Test>();
testConfig.HasKey(p => p.ContentId);
testConfig.Property(p => p.ContentId).IsIdentity();
// the problem
testConfig.Relationship(p => p.Item).HasConstraint((p, q) => p.Id == q.Id);
this.ContextBuilder.Configurations.Add(testConfig);
}
Cela donne une erreur: Une clé est enregistrée pour le type dérivé 'Test'. Les clés doivent être enregistrées pour le type racine "ContentBase".
de toute façon je tente d'obtenir une erreur. Que fais-je mal?