【发布时间】:2011-08-15 16:23:08
【问题描述】:
我正在尝试创建一个在我需要时自动添加审计跟踪表的功能。 它有点工作,但唯一的问题是审计表没有得到我指定的主键,它保留了之前指定的 ItemId 作为主键。
这是因为我在 ADepartment 中继承了 Department,并且已经在第一个 EntityTypeConfiguration 中指定了一个主键。我猜 EF 足够聪明,可以意识到这一点,但这不是我想要的。
有没有办法告诉第二个 EntityTypeConfiguration 它应该停止使用 ItemId 作为主键并开始使用 AuditId?
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);
【问题讨论】:
标签: .net entity-framework ef-code-first