none
entity framework collation ve sqlite RRS feed

  • Genel Tartışma

  • Merhaba,

    entity framework code first ile database collation nasıl ayarlayabiliriz? Turkish_CI_AS

    namespace WebSite.Data
    {
        public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
        {
            public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
            {
                Database.EnsureCreated();
            }

            public DbSet<CommonSetting> CommonSettings { get; set; }
            public DbSet<ApplicationRole> ApplicationRoles { get; set; }
            public DbSet<ApplicationUser> ApplicationUsers { get; set; }
            public override DbSet<IdentityUserRole<string>> UserRoles { get; set; }
            public DbSet<Language> Languages { get; set; }
            public DbSet<LocalizationRecord> LocalizationRecords { get; set; }
            public DbSet<Menu> Menus { get; set; }
            public DbSet<Page> Pages { get; set; }
            public DbSet<PageRoot> PageRoots { get; set; }
            public DbSet<Slider> Sliders { get; set; }
            public DbSet<Country> Countries { get; set; }
            public DbSet<City> Cities { get; set; }
            public DbSet<District> Districts { get; set; }
            

            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
               
                base.OnModelCreating(modelBuilder);

                //modelBuilder.("Turkish_CI_AS");

                modelBuilder.Entity<ApplicationUser>().ToTable("WebsiteUsers");
                modelBuilder.Entity<ApplicationRole>().ToTable("WebsiteRoles");
                modelBuilder.Entity<IdentityUserRole<string>>().ToTable("WebsiteUserRoles");
                modelBuilder.Entity<IdentityRoleClaim<string>>().ToTable("WebsiteRoleClaims");
                modelBuilder.Entity<IdentityUserClaim<string>>().ToTable("WebsiteUserClaims");
                modelBuilder.Entity<IdentityUserLogin<string>>().ToTable("WebsiteUserLogins");
                modelBuilder.Entity<IdentityUserToken<string>>().ToTable("WebsiteUserTokens");
            }

            public override int SaveChanges()
            {
                base.ChangeTracker.DetectChanges();
                
                return base.SaveChanges();
            }
            
            
        }
    }

    22 Ekim 2020 Perşembe 21:07

Tüm Yanıtlar

  • Tam emin değilim ama, startta biyerde;

    dbContex.DataBase.ExecuteSqlRaw("alter database DbAdı set collate Turkish_CI_AS");
    denermisin.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    22 Ekim 2020 Perşembe 21:23
    Moderatör
  • Database SQLite ismi WebSiteDB.db  hata veriyor sqlite için çalışmıyor sanırım.

    Microsoft.Data.Sqlite.SqliteException: 'SQLite Error 1: 'near "database": syntax error'.'

     public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
            {
                Database.EnsureCreated();
                Database.ExecuteSqlRaw("alter database WebSiteDB set collate Turkish_CI_AS");
            }


    Yapmak istediğim büyük küçük harf  duyarlığını kapatmak şöyle birşey buldum sqlite için fakat nerede çalıştıracağım. 

    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
            {
                Database.ExecuteSqlRaw("PRAGMA case_sensitive_like = 0");
                Database.EnsureCreated();

            }


    • Düzenleyen suat suphi 23 Ekim 2020 Cuma 10:01 ek soru
    23 Ekim 2020 Cuma 09:03
  • çalışmaz tabi , bir tuvlete girdiğinizde "bu kapaaklar siyh, bizim evdeki beyaz napıcam " diye soruyor musunuz?

    database belirtmediğiniz için Turkish_CI_AS yi görünce Mssql zannedip T-SQL örneği verdim, siz bu dbcc sorgusunun kendi veritabanınıza göre olanını yazın.

    projeniz core ise Startup.cs de Configure methodunda, .net framework ise global.asax , App_Start handlerinde olabilir.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    23 Ekim 2020 Cuma 12:12
    Moderatör
  • Merhaba,

    kendi verdiğiniz örneği eleştirmişsiniz :) 

     Database.ExecuteSqlRaw("PRAGMA case_sensitive_like = 0"); 

    ben bunu buldum ancak çalışmıyor. 


    23 Ekim 2020 Cuma 12:26
  • okuduğunu anlayamıyorsun galiba :)

    neyse takıl sen.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    23 Ekim 2020 Cuma 16:10
    Moderatör
  • Benim amacım zaten takılmak :) moderatör :) 

    23 Ekim 2020 Cuma 20:08
  • sanırım tek tek bütün kolonları tanımlamak gerekiyor. NOCASE i varsayılan değer olarak TEXT için tanımlansa daha mantıklıydı. 

    modelBuilder.Entity<Country>().Property(t => t.BinaryCode).HasColumnType("TEXT COLLATE NOCASE");

    26 Ekim 2020 Pazartesi 14:11
  • https://www.youtube.com/watch?v=OgMhLVa_VfA&list=PLdo4fOcmZ0oX-DBuRG4u58ZTAJgBAeQ-t

    konuyla ilgili güncelleme geldi :) soru sormuştum. 

    27 Ekim 2020 Salı 18:30