gpt4 book ai didi

c# - int 和 string 之间的唯一索引

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:36 26 4
gpt4 key购买 nike

我遇到了这个问题,我想在整数和字符串之间创建一个唯一索引,但它给了我以下问题。我怎样才能使这项工作,为什么这是不允许的?因为我真的很想要这个独特的组合,以确保没有双标签存储在数据库中。

Column 'Label' in table 'dbo.HostingReportGroups' is of a type that is invalid for use as a key column in an index.

我为此使用的模型如下:

public class HostingReportGroup
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Index("UniqueCustomerAndLabel", 1, IsUnique = true)]
public int CustomerId { get; set; }

[Index("UniqueCustomerAndLabel", 2, IsUnique = true)]
public string Label { get; set; }

public virtual ICollection<HostingReportGroupList> HostingReportGroupLists { get; set; }
}

我尝试执行的迁移包含以下代码:

public partial class adding_unique_key_to_hosting_report_group : DbMigration
{
public override void Up()
{
CreateIndex("dbo.HostingReportGroups", new[] { "CustomerId", "Label" }, unique: true, name: "UniqueCustomerAndLabel");
}

public override void Down()
{
DropIndex("dbo.HostingReportGroups", "UniqueCustomerAndLabel");
}
}

最佳答案

C# 字符串数据类型在 T-SQL 中被翻译为 NVARCHAR(MAX)。 SQL Server 有限制:

CREATE INDEX

The maximum allowable size of the combined index values is 900 bytes for a clustered index, or 1,700 for a nonclustered index.

Columns that are of the large object (LOB) data types ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, or image cannot be specified as key columns for an index

所以你需要定义最大尺寸(使用注解):

[MaxLength(500)]

DBFiddle Demo

关于c# - int 和 string 之间的唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50755833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com