Имена столбцов в каждой таблице должны быть уникальными.Имя столбца «LastName» в таблице «HumanCustomers» указывается более одного раза - PullRequest
2 голосов
/ 20 апреля 2019

После обновления моей модели и добавления аннотации данных.

Затем я выполнил команды add -igration и update-database, и у меня появилась следующая ошибка:

Имена столбцов в каждой таблицеДолжно быть уникальным.Имя столбца «LastName» в таблице «HumanCustomers» указывается более одного раза.

Но поле LastName используется один раз.

HumanCustomer Class:

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");
        }

1 Ответ

0 голосов
/ 20 апреля 2019

Ошибка ясно указывает на то, что в вашей таблице уже есть столбец с именем LastName, и перенос нельзя применить для добавления нового столбца с тем же именем.
Либо перейдите в систему управления базами данных и удалите столбец вручную, либо, если вы только что переключились на code-first, и у вас есть существующая схема, которую вы хотите игнорировать при следующей миграции, затем удалите файл миграции и создайте новую, используя * 1003. * флаг:

Add-Migration migrationName –IgnoreChanges

Хотя, как прокомментировал @Ahmad, -IgnoreChanges не поддерживается в EF Core, поэтому одну вещь, которую вы можете сделать, это то, что если вы не хотите беспокоиться об удалении столбца из таблицы вручную, вы можете закомментировать Add LastName код в методе Up.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...