Entity Framework: миграция Имена столбцов в каждой таблице должны быть уникальными - PullRequest
0 голосов
/ 27 марта 2019

Теперь у меня проблема с исходным кодом.Я не знаю причину.Я использую EntityFramework.6.1.3.

  1. Теперь у меня есть папка Model, и в этой папке у меня Product.cs.Вот содержимое файла Product.cs.

`

[Data]
[Column(TypeName = "numeric"), Display(Name = "ProductUnitPrice")]
public decimal ProductUnitPrice { get; set; }

У меня есть таблица Products - это выходы.У меня все еще нет файла Миграция для добавления нового ProductUnitPrice в таблицу «Продукты».

Когда я запускаю свой проект, автоматически добавляется новый столбец ProductUnitPrice в таблицу «Продукта».

Однако я хочу создать файл Migration для добавления нового ProductUnitPrice в таблицу Products.

Вот миграция файла.

`

public partial class AddColumnToProducts : DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.Products", "ProductUnitPrice", c => c.Decimal(nullable: false, precision: 18, scale: 2, storeType: "numeric"));
        }
        public override void Down()
        {
            DropColumn("dbo.Products", "ProductUnitPrice");
        }
    }

`

Но когда я запускаю свое приложение, я получаю сообщение об ошибке Column names in each table must be unique. Column name 'ProductUnitPrice' in table 'dbo.Products' is specified more than once. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Data.SqlClient.SqlException: Column names in each table must be unique. Column name 'ProductUnitPrice' in table 'dbo.Products' is specified more than once.

Чтобы решить вышеупомянутую проблему, я добавил [NotMapped] в файл модели
    [Data]
    [Column(TypeName = "numeric"), Display(Name = "ProductUnitPrice")]
    [NotMapped]
    public decimal ProductUnitPrice { get; set; }

Я могу запустить приложение, и ProductUnitPrice вставляется в БД.Однако моя проблема в том, что я могу обновить данные в столбце ProductUnitPrice.Если я удаляю файлы миграции и [NotMapped], я могу обновить данные в столбце ProductUnitPrice.

В чем проблема?

Я хочу иметь файл миграции для добавления столбца ProductUnitPrice и хочу, чтобы я могобновить данные в этом столбце.

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 27 марта 2019

Это означает, что у вас уже есть этот столбец в вашей таблице.

Что мне приходит в голову, это то, что вы установили что-то подобное в файле конфигурации вашей миграции:

AutomaticMigrationsEnabled = true;

Это означаеткаждый раз, когда вы что-то изменяете в своей модели, миграции автоматически «обновляются».

Если это так, попробуйте установить для AutomaticMigrationsEnabled значение false, удалить миграцию, запустить проект, а затем попробуйте снова добавить миграцию.

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