Как мне обрабатывать Entity Framework Core, пропуская явные значения (IsActive = 0) при заполнении моей базы данных?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как мне обрабатывать Entity Framework Core, пропуская явные значения (IsActive = 0) при заполнении моей базы данных?

Сообщение Anonymous »

Я использую ASP.Net Core, SQLite для создания приложения банковского типа. Когда я обновляю и заполняю свою базу данных, EF Core не распознает или игнорирует IsActive = 0, из-за чего все мои банковские учетные записи создаются со значением по умолчанию, равным 1. Есть ли проблема в том, как я создал свою таблицу, как я заполняю свою базу данных? или что-то еще?
Вот оператор раздачи:

Код: Выделить всё

            modelBuilder.Entity().HasData(
new BankAccount {
PkAccountId = 1,
FkAccountTypeId = 1,
Balance = 1500.00M,
IsActive = 1,
DateOpened = DateTime.Parse("2024/03/09")
},
new BankAccount {
PkAccountId = 2,
FkAccountTypeId = 2,
Balance = 3000.00M,
IsActive = 0,
DateOpened = DateTime.Parse("2020/06/01")
},
new BankAccount {
PkAccountId = 3,
FkAccountTypeId = 3,
Balance = 8000.00M,
IsActive = 1,
DateOpened = DateTime.Parse("2021/01/01")
},
new BankAccount {
PkAccountId = 4,
FkAccountTypeId = 4,
Balance = 12000.00M,
IsActive = 1,
DateOpened = DateTime.Parse("2024/07/06")
},
new BankAccount {
PkAccountId = 5,
FkAccountTypeId = 5,
Balance = 4500.00M,
IsActive = 1,
DateOpened = DateTime.Parse("2020/03/08")
});
И скриншот выполнения вышеуказанных команд:

Код: Выделить всё

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
INSERT INTO "Bank Account" ("PkAccountId", "Balance", "DateOpened", "FkAccountTypeId", "IsActive")
VALUES (1, '1500.0', '2024-03-09 00:00:00', 1, 1);
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
INSERT INTO "Bank Account" ("PkAccountId", "Balance", "DateOpened", "FkAccountTypeId")
VALUES (2, '3000.0', '2020-06-01 00:00:00', 2);
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
INSERT INTO "Bank Account" ("PkAccountId", "Balance", "DateOpened", "FkAccountTypeId", "IsActive")
VALUES (3, '8000.0', '2021-01-01 00:00:00', 3, 1);
INSERT INTO "Bank Account" ("PkAccountId", "Balance", "DateOpened", "FkAccountTypeId", "IsActive")
VALUES (4, '12000.0', '2024-07-06 00:00:00', 4, 1);
INSERT INTO "Bank Account" ("PkAccountId", "Balance", "DateOpened", "FkAccountTypeId", "IsActive")
VALUES (5, '4500.0', '2020-03-08 00:00:00', 5, 1);
Вот моя таблица:

Код: Выделить всё

modelBuilder.Entity(entity =>
{
// Table Name
entity.ToTable("Bank Account");

// Primary Key
entity.HasKey(e => e.PkAccountId);
entity.Property(e => e.PkAccountId).ValueGeneratedOnAdd();

// Properties
entity.Property(e => e.DateOpened)
.HasColumnType("TEXT")
.HasDefaultValue(DateTime.Now)
.IsRequired();

entity.Property(e => e.Balance)
.HasColumnType("REAL")
.IsRequired();

entity.Property(e => e.IsActive)
.HasColumnType("INTEGER")
.HasDefaultValue(1)
.IsRequired();

// Foreign Key Relationship
entity.HasOne(e => e.BankAccountType)
.WithMany(e => e.BankAccounts)
.HasForeignKey(e =>  e.FkAccountTypeId)
.OnDelete(DeleteBehavior.Restrict);

});
Сначала я подумал, что, возможно, возникла проблема с тем, как SQLite создает таблицы, поэтому я изменил типы столбцов, чтобы они соответствовали доступным типам столбцов в SQLite: varchar(50), decimal(9, 2) и т. д. Я также подумал, что, возможно, возникла проблема с моим ограничением диапазона, поэтому я удалил ее, а также добавил в модели конструктор по умолчанию. Насколько я понял, ни одно из этих изменений не повлияло на создание таблиц или заполнение.

Подробнее здесь: https://stackoverflow.com/questions/792 ... isactive-0
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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