J'essaie de créer une fonction qui ajoute automatiquement une table de vérification lorsque j'en ai besoin. Cela fonctionne en quelque sorte mais le seul problème est que la table d'audit n'obtient pas la clé primaire que j'ai spécifiée, elle reste sur l'élément ItemId spécifié précédemment comme clé primaire. C'est parce que j'hérite Department dans ADepartment et que j'ai déjà spécifié une clé primaire dans la première EntityTypeConfiguration. Je suppose que l'EF est assez intelligent pour réaliser cela mais ce n'est pas ce que je veux.Code EF-Premier héritage et problème de clé primaire
Est-il possible de dire à la deuxième EntityTypeConfiguration qu'elle doit cesser d'utiliser ItemId comme clé primaire et commencer à utiliser AuditId pour cela?
public class Item
{
public int ItemId { get; set;}
}
public class Department : Item
{
public string Name { get; set; }
}
public class ADepartment : Department, IAudit
{
public int AuditId { get; set; }
}
EntityTypeConfiguration<Department> cfg = new EntityTypeConfiguration<Department>();
cfg.HasKey(p => p.ItemId);
cfg.Map(p => p.MapInheritedProperties());
cfg.ToTable(string.Format("Entity{0}", typeof(Department).Name));
model.Configurations.Add<Department>(cfg);
EntityTypeConfiguration<ADepartment> c = new EntityTypeConfiguration<ADepartment>();
c.HasKey(p => p.AuditId);
c.Map(p => p.MapInheritedProperties());
c.ToTable(string.Format("Audit{0}", typeof(ADepartment).Name));
model.Configurations.Add<ADepartment>(c);
Merci. J'ai décidé d'utiliser une interface que les deux types doivent mettre en œuvre avec les champs que je veux dans la table d'audit. – Jeroen