我正在开发一个ASP.Net Core 2.1 API,并使用Entity Framework Core 2.1。我使用迁移来管理对数据库的更改。我的后端数据存储是Azure SQL Server的一个实例。
我需要在其中一个表上添加一个多字段非聚集索引,但是我在谷歌搜索中难以找到简明参考资料。
我尝试在POCO类中使用[Index()]数据注释,但它没有被识别。因此,我认为我必须在我的DbContext类的OnModelCreating方法中完成这个操作,但我还没有找到如何为多字段非聚集索引完成此操作的示例。
以下是一个实体类示例:
我希望在我的DbContext的OnModelCreating方法中为ShippingServicesFileId和DeleteFlag创建一个非聚集索引,以便在运行Package Manager控制台中的add-migration时自动捕捉到它。你有什么想法吗?
我需要在其中一个表上添加一个多字段非聚集索引,但是我在谷歌搜索中难以找到简明参考资料。
我尝试在POCO类中使用[Index()]数据注释,但它没有被识别。因此,我认为我必须在我的DbContext类的OnModelCreating方法中完成这个操作,但我还没有找到如何为多字段非聚集索引完成此操作的示例。
以下是一个实体类示例:
public class H1Record : EntityBase
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[ForeignKey("ShippingServicesFileId")]
public ShippingServicesFile ShippingServicesFile { get; set; }
[Required]
public int ShippingServicesFileId { get; set; }
[Column(TypeName = "varchar(20)")]
public string BatchId { get; set; }
[Column(TypeName = "varchar(34)")]
[MaxLength(34)]
public string ElectronicFileNumber { get; set; }
[Column(TypeName = "varchar(1)")]
[MaxLength(1)]
public string ElectronicFileType { get; set; }
[Column(TypeName = "varchar(8)")]
[MaxLength(8)]
public string DateOfMailing { get; set; }
[Column(TypeName = "varchar(6)")]
[MaxLength(6)]
public string TimeOfMailing { get; set; }
public DateTime MailingDateTime { get; set; }
[Column(TypeName = "varchar(1)")]
[MaxLength(1)]
public string EntryFacilityType { get; set; }
[Column(TypeName = "varchar(5)")]
[MaxLength(5)]
public string EntryFacilityZipCode { get; set; }
[Column(TypeName = "varchar(4)")]
[MaxLength(4)]
public string EntryFacilityZipPlus4 { get; set; }
[Column(TypeName = "varchar(2)")]
[MaxLength(2)]
public string DirectEntryOriginCountryCode { get; set; }
[Column(TypeName = "varchar(3)")]
[MaxLength(3)]
public string ShipmentFeeCode { get; set; }
[Column(TypeName = "varchar(6)")]
[MaxLength(6)]
public string ExtraFeeForShipment { get; set; }
[Column(TypeName = "varchar(2)")]
[MaxLength(2)]
public string ContainerizationIndicator { get; set; }
[Column(TypeName = "varchar(3)")]
[MaxLength(3)]
public string UspsElectronicFileVersionNumber { get; set; }
[Column(TypeName = "varchar(12)")]
[MaxLength(12)]
public string TransactionId { get; set; }
[Column(TypeName = "varchar(8)")]
[MaxLength(8)]
public string SoftwareVendorProductVersionNumber { get; set; }
[Column(TypeName = "varchar(9)")]
[MaxLength(9)]
public string FileRecordCount { get; set; }
[Column(TypeName = "varchar(9)")]
[MaxLength(9)]
public string MailerId { get; set; }
public ICollection<D1Record> D1Records { get; set; } = new List<D1Record>();
public ICollection<C1Record> C1Records { get; set; } = new List<C1Record>();
}
这里是实体基类(entitybase class)的代码:
public class EntityBase
{
public DateTime CreatedDate { get; set; }
public DateTime LastModifiedDate { get; set; }
public int CreatedByUserId { get; set; }
public int LastModifiedByUserId { get; set; }
public bool DeleteFlag { get; set; }
}
我希望在我的DbContext的OnModelCreating方法中为ShippingServicesFileId和DeleteFlag创建一个非聚集索引,以便在运行Package Manager控制台中的add-migration时自动捕捉到它。你有什么想法吗?