gpt4 book ai didi

c# - 每个表中的列名必须是唯一的。多次指定表 'LastName' 中的列名 'HumanCustomers'

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:07 24 4
gpt4 key购买 nike

更新我的模型并添加数据注释后。

然后我执行了 add-migration 和 update-database 命令,我得到了以下错误:

Column names in each table must be unique. Column name 'LastName' in table 'HumanCustomers' is specified more than once.

但 LastName 字段曾经使用过。

人类客户类:

public class HumanCustomer
{
public int Id { get; set; }
public int UserId { get; set; }
[Required]
[MinLength(2)]
[MaxLength(20)]
public string Name
{
get => Name;
set
{
value.TrimAndReduce();
}
}
[Required]
[MinLength(2)]
[MaxLength(20)]
public string LastName
{
get => LastName;
set
{
value = value.TrimAndReduce();
}
}
[NotMapped]
public string FullName
{
get { return Name + LastName; }

}
[Required(AllowEmptyStrings = true)]
public int GenderId { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }
public DateTime BirthDate { get; set; }
public int IdentityTypeId { get; set; }
public string IdentityCode { get; set; }
[Required]
[ForeignKey("UserId")]
public virtual User User { get; set; }
[Required]
[ForeignKey("IdentityTypeId")]
public virtual IdentityType IdentityType { get; set; }
[Required]
[ForeignKey("GenderId")]
public virtual Gender Gender { get; set; }
}

和迁移:

 protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "LastName",
table: "HumanCustomers",
maxLength: 20,
nullable: false,
defaultValue: "");

migrationBuilder.AddColumn<string>(
name: "Name",
table: "HumanCustomers",
maxLength: 20,
nullable: false,
defaultValue: "");
}

protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "LastName",
table: "HumanCustomers");

migrationBuilder.DropColumn(
name: "Name",
table: "HumanCustomers");
}

最佳答案

该错误清楚地表明您的表中已经有一个名为 LastName 的列,并且无法应用迁移来添加具有相同名称的新列。
转到数据库管理系统并手动删除该列,或者如果您刚刚切换到代码优先并且您有想要在下一次迁移中忽略的现有架构,则删除迁移文件并使用 -IgnoreChanges 标志创建一个新文件:

Add-Migration migrationName –IgnoreChanges

不过,正如@Ahmad 评论的那样,EF Core 不支持 -IgnoreChanges,因此,您可以做的一件事是,如果您不想手动删除表中的列,可以注释掉 Add LastName 代码在 Up 方法中。

关于c# - 每个表中的列名必须是唯一的。多次指定表 'LastName' 中的列名 'HumanCustomers',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55770503/

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