C# 尝试向具有继承的表中添加几个审核字段--派生类中的键存在问题

C# 尝试向具有继承的表中添加几个审核字段--派生类中的键存在问题,c#,entity-framework-core,asp.net-core-1.0,C#,Entity Framework Core,Asp.net Core 1.0,我使用的是实体框架版本1.1.2 我想在SQL Server中创建的每个表中添加两个审核字段: 创建UTC LastChangeUTC 因此,我创建了一个根抽象类,其中包含以下两个字段: public abstract class Audit { [Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)] public DateTime CreateUTC { get; set; } [Required

我使用的是实体框架版本1.1.2

我想在SQL Server中创建的每个表中添加两个审核字段: 创建UTC LastChangeUTC

因此,我创建了一个根抽象类,其中包含以下两个字段:

public abstract class Audit
{

    [Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime CreateUTC { get; set; }
    [Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime LastChangeUTC { get; set; }
}
然后,我尝试用下面的派生类继承根审计类,这有一个挑战,就是拥有一个复合键。不是我所有的桌子都是这样的;有些只是有一个主键

public class Province : Audit
{
    [Key]
    [Column(Order = 1)]
    [MaxLength(25)]
    public string CountryId { get; set; }
    [Key]
    [Column(Order = 2)]
    [MaxLength(25)]
    public string ProvinceId { get; set; }
    [MaxLength(50)]
    public string ProvinceDesc { get; set; }

} 
但每次我试图注释派生类中的任何键时,我都会遇到这个问题,指出这是不允许的:

无法在派生类上配置键,因为它是派生类型

A.)如果我不能使用继承,我如何使自己轻松地将这两个字段添加到每个表中,而不显式地、冗余地将它们添加到类中

B.)如何在派生类上保留复合键,并将继承的属性(我的审核字段)排序到表的底部,以便最终得到一个表字段/模式表示,并在SQL Server中按如下顺序排列:

KEY CountryId

KEY ProvinceId     

ProvinceDesc 

CreateUTC

LastChangeUTC

您将它们标记为数据库生成的…如果要手动分配值,请将其删除。不必担心我将如何将UTC值分配给日期字段。更担心的是,我得到了一个错误,声明派生类上不允许使用我的带注释的复合键或任何带注释的键。为了正确地键入此表,我真的必须将这些审核字段显式地添加到每个类吗?不要在EF模型中包含
audit
class。属性将添加到每个派生类中,但基类不能是模型的一部分。对于
属性,不能使用属性定义复合键,必须使用fluent API。要控制属性的顺序,请编辑迁移文件