Почему при создании новой строки в БД currentValue в ключе равно этому странному int? - PullRequest
0 голосов
/ 04 июля 2018

Я нашел эту странную ошибку.

У меня есть система журналирования, которая регистрирует все изменения в базе данных. Я использую это, чтобы получить ключи отредактированных или добавленных значений. Краткое объяснение:

var changes = ChangeTracker.Entries()
    .Where(p => p.State == EntityState.Modified || p.State == EntityState.Added).ToList();

foreach (var change in changes) {
    ...
    var primaryKeys = change.Properties.Where(key => key.Metadata.IsPrimaryKey())
        .ToDictionary(key => key.Metadata.Name,
           key => key.CurrentValue.ToString());;
    ...
}

А когда добавляется какая-то строка и ключ равен int , key.CurrentValue всегда равен -2147482647. Это странно, потому что int минимальное значение -2147483648, поэтому разность 1001.

Еще раз:

key.CurrentValue: -214748 2 64 7

Int минимальный: -214748 3 64 8

У вас есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 04 июля 2018

Спасибо Selva TS !

Этот странный int на самом деле является временным идентификатором, закодированным в Entity Framework. Поскольку мой идентификатор автоматически увеличивается в моей БД, для меня это не проблема.

У них даже есть тест для этого, так что это не ошибка, это особенность: D

Тесты

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