Исключение класса EF Core Enumeration - PullRequest
0 голосов
/ 27 ноября 2018

Я использую класс перечисления следующим образом:

public class BillTransactionState
{
    public static readonly BillTransactionState Initialized = new BillTransactionState(1, "Initialized");
    public static readonly BillTransactionState Invoiceable = new BillTransactionState(2, "Invoiceable");
    public static readonly BillTransactionState NoSow = new BillTransactionState(3, "NoSow");
    public static readonly BillTransactionState Invoiced = new BillTransactionState(4, "Invoiced");

    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

У меня есть другой класс, который ссылается на BillTransactionState:

public class BillTransactionStateHistory : IEntity<long>
{
    public long Id { get; set; }
    public DateTime EffectiveDate { get; set; }
    public BillTransactionState BillTransactionState { get; set; }
}

В моем webapi, когда я делаю что-то вроде этого:

var billTransactionStateHistory = new BillTransactionStateHistory ({
        BillTransaction = BillTransaction .Initialized,
        EffectiveDate = DateTime.Now
      });
_dbContext.BillTransactionStateHistories.AddAsync(billTransactionStateHistory)

Я получаю сообщение об ошибке:

Идентификация вставки отключена для BillTransactionState.

Я понял, что EF Core пытается вставить строку в BillTransactionStateтаблица со значениями 1 (для Id) и 'Initliazed'.Как я могу остановить EF Core от попытки вставить строку в этот перечислимый класс.Любая помощь в этом отношении будет высоко оценена.Спасибо.

1 Ответ

0 голосов
/ 27 ноября 2018

Напишите свой BillTransactionStateHistory класс модели следующим образом:

public class BillTransactionStateHistory : IEntity<long>
{
    public long Id { get; set; }
    public DateTime EffectiveDate { get; set; }
    public int BillTransactionState { get; set; }
}

Примечание: После этого не забудьте соответствующим образом обновить базу данных!

Затем вМетод веб-API:

var billTransactionStateHistory = new BillTransactionStateHistory ()
{
   BillTransactionState = BillTransactionState.Initialized.Id,
   EffectiveDate = DateTime.Now
};
_dbContext.BillTransactionStateHistories.AddAsync(billTransactionStateHistory)
...