Почему EFCore SQLite возвращает неправильное значение int?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему EFCore SQLite возвращает неправильное значение int?

Сообщение Anonymous »

Контекст
У меня есть приложение, записывающее данные в базу данных sqlite, в которой созданы повторяющиеся записи. Я создаю инструмент командной строки, который считывает данные из базы данных и выводит данные, относящиеся к дублированным записям.
Проблема
Я подключаюсь к базе данных SQLite с помощью EFCore, когда я запрашиваю таблицу для всех записей, свойство itemID каждой строки равно 1. Когда я открываю базу данных во внешних инструментах, значения отображаются, как и ожидалось, с инкрементным идентификатором.
Факт против ожидаемого
IEnumerable визуализатор фактического результата
Изображение


Ожидаемый результат, показанный в источнике данных с использованием внешнего инструмента


Изображение

Технологии [*].net8.0.2 [*]Microsoft.EntityFrameworkCore.SqlServer [*]Чтение файла .db3, созданного с помощью SQLite-NET-PCL 1.8.116 СОЗДАТЬ ТАБЛИЦУ "DefectReportAnswer" ( "Report_id" varchar , "Item_id" целое число, «Примечание» varchar , «Дата_начала» bigint , "Дата_окончания" bigint , «Дефектное» целое число ) Код Модель публичный класс DefectReportAnswer { [Ключ] общественная строка Report_id {get; набор; } общественный ИНТ Item_id {получить; набор; } общедоступная строка? Примечание {получить; набор; } общественный System.DateTimeOffset Start_date {get; набор; } общественный System.DateTimeOffset End_date {get; набор; } public bool Defective { get; набор; } } Контекст внутренний класс SQLiteDefectReportContext: DbContext { общедоступный SQLiteDefectReportContext (строка dbPath) { ДбПат = БдПат; } общественный DbSet DefectReportAnswer {get; набор; } общественная строка DbPath {получить; частный набор; } защищенное переопределение void OnConfiguring (DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); optionsBuilder.UseSqlite($"Источник данных={DbPath}"); } защищенное переопределение void OnModelCreating (ModelBuilder modelBuilder) { modelBuilder.Entity() .Property(d => d.Start_date) .HasConversion( d => d.Ticks, dt => новый DateTimeOffset( новый DateTime(dt, DateTimeKind.Local).IsDaylightSavingTime() ? dt — TimeSpan.TicksPerHour: dt, новый TimeSpan(0) ) ); modelBuilder.Entity() .Property(d => d.End_date) .HasConversion( d => d.Ticks, dt => новый DateTimeOffset( новый DateTime(dt, DateTimeKind.Local).IsDaylightSavingTime() ? dt — TimeSpan.TicksPerHour: dt, новый TimeSpan(0) ) ); } } Основная var ответы = _sqlite.DefectReportAnswer .Where(d => d.Report_id == reportID) .ToArray();
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»