SQLite - migracje

H2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

Cześć Wszystkim,
Mój program tworzy bazę danych o ile ta wcześniej nie istniała. Jeżeli istnieje to po prostu dopisuje do niej dane. Problem jednak w tym, że gdy zmienię model (dodając chociażby jedną kolumnę - CodeFirst - to program już nie wpisuje poprawnie danych do tej bazy. Wiem, że to problem z migracjami jednak nie wiem jak go rozwiązać. Mam nadzieję, że ktoś pomoże. Poniżej kody źródłowe:

a) model:

Kopiuj
using System;
using System.ComponentModel.DataAnnotations.Schema;

namespace test
{
    [Table("test")]
    public class test
    {
        public int Id { get; set; }

        [Column("SCIEZKA_LOKALNA")]
        public string LocalPath { get; set; }

        [Column("STATUS_PRZENIESIENIA")]
        public string MoveStatus { get; set; }

        [Column("DATA_UTWORZENIA")]
        public DateTime CreateDate { get; set; }
    }
}

b) połączenie:

Kopiuj
using System;
using System.Data.Entity;
using System.Data.SQLite;
using System.IO;


namespace SimpleScanSynch
{
    public class LocalSqliteUtils
    {
        private readonly string database = "test.sqlite";

        public LocalSqliteUtils()
        {
            CreateDbEntity();
        }

        private void CreateDbEntity()
        {
            if (!File.Exists(database))
            {
                new BaseContext(database);
            }
        }
}

c) kontekst:

Kopiuj
using SQLite.CodeFirst;
using System.Data.Entity;
using System.Data.SQLite;

namespace SimpleScanSynch.Context
{
    public class BaseContext : DbContext
    {
        public BaseContext(string database) : base(new SQLiteConnection()
        {
            ConnectionString = new SQLiteConnectionStringBuilder()
            {
                DataSource = database,
                ForeignKeys = true
            }
            .ConnectionString
        }, true)
        { }

        public virtual DbSet<test> test{ get; set; }
        
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            Database.SetInitializer(new SqliteCreateDatabaseIfNotExists<BaseContext>(modelBuilder));
            base.OnModelCreating(modelBuilder);
        }
    }
}

  • Rejestracja: dni
  • Ostatnio: dni
0

Ale sama migracja przechodzi ci poprawnie?

H2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

No nie ma w ogóle mechanizmu migracji. Jak tylko go dodam to program się 'nie wysypuje', ale nic nie wpisuje do bazy, a to strata informacji na którą pozwolić nie mogę.

KL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 191

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.