none
sqlite ile ilgili bir kaç soru RRS feed

Tüm Yanıtlar

  • sqlite boolean type
    • Yanıt Olarak Öneren CetinBasoz 23 Haziran 2020 Salı 21:18
    23 Haziran 2020 Salı 19:18
  • SQLite sadece 4 temel türde (NULL ile birlikte 5) veri saklayabilir. Tabiki C# ile bir şekilde kullanmak mümkün ama yazarken bu 4 temel türde yazıp ve sonrasında okurken dönüştürmen gerek.

    Düz mantık yapacak olursak elinde boolean türünde bir değer varsa veritabanına int olarak 0 ve 1 şeklinde kaydedeceksin, okurken oluşturduğun class'taki değişkene boolean olarak if else ile atayacaksın. Dönüştüreceğin sütun sayısı çoksa epey amelelik oluyor bu.

    Ama eğer EF kullanıyorsan aslında çok basit şekilde çözebilirsin. Kendi DbContext sınıfına gidip OnModelCreating metodunu override edip şu şekilde dönüşümü yaparsan veritabanından veriyi olduğu gibi class'ına çekebilirsin.

    modelBuilder.Entity<Models.Wallpaper.Entities.Color>(entity =>
    {
        entity.HasKey(x => x.Id);
        entity.Property(x => x.IsFavorite)
            .HasConversion(c => Convert.ToInt32(c),
                c => Convert.ToBoolean(c));
    });

    Böylece if else ile tip dönüşünü yapmak zorunda kalmazsın. Ve sadece boolen olarak düşünme, her türü bu mantıkla dönüştürmen mümkün, bkz;

    // DateTime to string / string to DateTime
    entity.Property(x => x.AddedDate)
        .HasConversion(c => c.ToString("yyyy-MM-dd HH:mm:ss", Settings.CultureInfo),
            c => DateTime.Parse(c));
    // enum to string / string to Enum
    entity.Property(x => x.WallpaperType)
        .HasConversion(c => c.ToString(),
            c => (WallpaperType)Enum.Parse(typeof(WallpaperType), c))
        .IsUnicode(false);



    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".



    23 Haziran 2020 Salı 22:41