第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 Entity Framework Core 2.1 定義多字段索引

如何使用 Entity Framework Core 2.1 定義多字段索引

C#
回首憶惘然 2021-10-24 14:21:10
我正在研究 ASP.Net Core 2.1 API,我使用 Entity Framework Core 2.1。我正在使用遷移來(lái)管理對(duì)數(shù)據(jù)庫(kù)的更改。我的后備數(shù)據(jù)存儲(chǔ)是 Azure SQL Server 的一個(gè)實(shí)例。我需要將多字段非聚集索引添加到我的一個(gè)表中,但我很難在我的 google 搜索中找到有關(guān)如何執(zhí)行此操作的簡(jiǎn)明參考。我嘗試在 POCO 類中使用 [Index()] 數(shù)據(jù)注釋,但無(wú)法識(shí)別。因此,我假設(shè)我必須在 DbContext 類的 OnModelCreating 方法中執(zhí)行此操作,但我還沒(méi)有找到有關(guān)如何為多字段非聚集索引執(zhí)行此操作的示例。這是一個(gè)示例實(shí)體類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; }}這是實(shí)體基類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 創(chuàng)建一個(gè)非聚集索引,當(dāng)我在我的包管理器控制臺(tái)中運(yùn)行 add-migration 時(shí),它會(huì)被拾取。有任何想法嗎?
查看完整描述

2 回答

?
開(kāi)滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

您不能在具有數(shù)據(jù)注釋的多個(gè)列上創(chuàng)建索引,因此您必須使用 Fluent API(在 OnModelCreating 中):

modeBuilder.Entity<ENTITYCLASS>().HasIndex(x => new {x.PROPERTY1, x.PROPERTY2, ...})

創(chuàng)建非聚集索引。使用 .IsUnique() 創(chuàng)建一個(gè)唯一的。如果您想在 SQL Server 上使用聚集索引,請(qǐng)使用 .ForSqlServerIsClustered()。您可以選擇使用 .HasName("...") 為其指定另一個(gè)名稱。


查看完整回答
反對(duì) 回復(fù) 2021-10-24
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

如果這是您的首選方法,您可以在遷移期間將列作為字符串?dāng)?shù)組傳入。例如

migrationBuilder.CreateIndex("IX_H1Record", "H1Record",new string[] { "ShippingServicesFileId", "DeleteFlag"}, "dbo");


查看完整回答
反對(duì) 回復(fù) 2021-10-24
  • 2 回答
  • 0 關(guān)注
  • 233 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)