0
我試圖做一個函數,當我需要時自動添加審計跟蹤表。 這是一種有效的工作,但唯一的問題是審計表沒有得到我指定的主鍵,它保留了以前指定的ItemId作爲主鍵。EF代碼 - 第一繼承和主鍵問題
這是因爲我繼承了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);
感謝。我決定使用這兩種類型需要在審計表中使用我想要的字段實現的接口。 – Jeroen