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

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

Сообщение Anonymous »


Контекст

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

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

IEnumerable визуализатор фактического результата:


Изображение


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


Изображение


Технологии
[*].NET 8.0.2 [*]Microsoft.EntityFrameworkCore.SqlServer [*]Чтение файла .db3, созданного с помощью SQLite-NET-PCL 1.8.116 [*]Visual Studio 2022 – 17.9.1
СОЗДАТЬ ТАБЛИЦУ "DefectReportAnswer" ( "Report_id" варчар, "Item_id" целое число, «Примечание» варчар, "Начальная_дата" 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) ) ); } } Основное
частный SQLiteDefectReportContext? _sqlite {получить; набор; } var constring = ConfigurationManager.ConnectionStrings["DBCS"]; _sql = новый SQLDefectReportContext (constringVal); вар ответы = _sqlite.DefectReportAnswer .Where(d => d.Report_id == reportID) .ToArray();
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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