Ana içeriğe atla

Sqlite için MVC 5 Identity DB Scripti

Merhabalar, Microsoft harici teknolojilere ve projelere ilgimi herkes bilir. Özelliklede birçok projede bazen başlangıç aşamasında bazende projenin tamamında sql server harici veri tabanları kullanırım. En sık kullandığım ise Sqlite'dır. Stabil, küçük ve dll'ini sisteme eklemekten başka bir şeye ihtiyaç duymayan herhangi bir kurulum yapmanız gerekmeyen süper bir db motoru bu arkadaş. Özellikle nhibernate ile create table script'leri dahi yazmadan code first mimarisi ile çok rahat çalışabiliyor. Ancak problem microsoft'un gelişmesi için 10 yıl gereken entity framework aracında başlıyor. Sadece microsoft teknolojilerini doğal olarak destekleyen bu araç diğer yapılara "İsterseniz bana provider yazıp kendinizi ekleyebilirsiniz" mantığında. böylede olunca gözümdeki beş para etmez bir hale geliyor. ancak kendim kullanmayacak olsamda bazı yerlerde microsoft bir işe yarayacakmış gibi bu arkadaşın kullanımını zorunlu kılıyor. uzun lafın kısası 1. Entity Framework'ten hoşlanmadığımı anlamışsınızdır. Kullanmamanızı tavsiye ederim. NHibernate bu konuda bence en iyi araç. 2. Gelelim asıl konumuza eğerki mvc 5 ile yeni gelen Asp.Net Identity altyapısını kullanmak istiyorsanız ve bu konudaki http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity adresi ve benzeri adreslerdeki yazıları okuduysanız, hemen klavye başına geçip sqlite ile bu arkadaşı test etmeye kalkabilirsiniz. Ama maalesef bu konuda başarılı olamayabilirsiniz. Çünkü code first ile database'i generate ettiğini söyleyen entity framework provider yok gibi abuk bir hata vermekte. O zaman elinize baltayı alma zamanı gelmiştir. Bende tam öyle yaptım ve aşağıdaki script'i hazırladım. Bu script ile veri tabanınızı hazırlayıp sonrada bunun üzerinden Asp.Net Identity altyapısını kullanabilirsiniz.


CREATE TABLE [AspNetRoles] (
    [Id]   NVARCHAR (128) NOT NULL,
    [Name] NTEXT NOT NULL,
    CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id] ASC)
);


CREATE TABLE [AspNetUserClaims] (
    [Id]         INT            IDENTITY (1, 1) NOT NULL,
    [ClaimType]  NText NULL,
    [ClaimValue] NTEXT NULL,
    [User_Id]    NVARCHAR (128) NOT NULL,
    CONSTRAINT [PK_dbo.AspNetUserClaims] PRIMARY KEY  ([Id] ASC),
    CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_User_Id] FOREIGN KEY ([User_Id]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE
);

CREATE INDEX [IX_AspNetUserClaims_User_Id]
    ON [AspNetUserClaims]([User_Id] ASC);


CREATE TABLE [AspNetUserLogins] (
    [UserId]        NVARCHAR (128) NOT NULL,
    [LoginProvider] NVARCHAR (128) NOT NULL,
    [ProviderKey]   NVARCHAR (128) NOT NULL,
    CONSTRAINT [PK_AspNetUserLogins] PRIMARY KEY ([UserId] ASC, [LoginProvider] ASC, [ProviderKey] ASC),
    CONSTRAINT [FK_AspNetUserLogins_dbo.AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE
);

CREATE INDEX [IX_UserId]
    ON [AspNetUserLogins]([UserId] ASC);


CREATE TABLE [AspNetUserRoles] (
    [UserId] NVARCHAR (128) NOT NULL,
    [RoleId] NVARCHAR (128) NOT NULL,
    CONSTRAINT [PK_dbo.AspNetUserRoles] PRIMARY KEY  ([UserId] ASC, [RoleId] ASC),
    CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [AspNetRoles] ([Id]) ON DELETE CASCADE,
    CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE
);

CREATE INDEX [IX_RoleId]
    ON [AspNetUserRoles]([RoleId] ASC);

CREATE INDEX [IX_AspNetUserRoles_UserId]
    ON [AspNetUserRoles]([UserId] ASC);


CREATE TABLE [AspNetUsers] (
    [Id]            NVARCHAR (128) NOT NULL,
    [UserName]      NTEXT NULL,
    [PasswordHash]  NTEXT NULL,
    [SecurityStamp] NTEXT NULL,
    [Discriminator] NVARCHAR (128) NOT NULL,
    CONSTRAINT [PK_AspNetUsers] PRIMARY KEY ([Id] ASC)
);


CREATE TABLE [__MigrationHistory] (
  [MigrationId] NVARCHAR(150) NOT NULL, 
  [ContextKey] nvARCHAR(300) NOT NULL, 
  [Model] NTEXT NOT NULL, 
  [ProductVersion] nvARCHAR(32) NOT NULL, 
  CONSTRAINT [] PRIMARY KEY ([MigrationId] ASC, [ContextKey] ASC)
);


örnek projeyi şu adresten inceleyebilirsiniz: https://github.com/alperkonuralp/AspNetMvc5WithSqlite
Yorum Gönder

Bu blogdaki popüler yayınlar

Babamın durumu

Babam Mart 2017 de zatüreden hastanede yatmıştı. Bu sırada ciğerlerde bir kanser görülmüş. Bu kanserin ne olduğu ile ilgili tetkikler de başlamış. Zatüreden sonra hemen kanser ile ilgili işlemlere yoğunlaşıldı. Kalçada görülen bir kitle vardı. Ona da baktılar ama temiz çıktı. Kanser tedavisi olan kemoterapi hemen başladı. 14 haziranda ilk kemoterapi dozunu aldı. İlk günler iyiydi. 19 hazirandan itibaren durumu kötülemeye başlamış. En son 21 Haziran gecesi çok kötü olunca önce Torbalı Devlet Hastanesine götürüldü. Burada vücudundaki sodyum'un çok azalmış olmasından dolayı hemen sodyum takviyesi yapıldı. Sodyum takviyesi ancak bir oranda etkili olduktan sonra yine kötü duruma geri dönüş yapmış. Bu yüzden Bozyaka araştırma hastanesine sevkedildi. Bozyaka da önce dahiliye yoğun bakıma alındı. Ancak burada bir süre kalbi durmuş ve kalp masajı ile geri getirmişler. Sonrada genel yoğun bakıma aldılar.
Şu an yoğun bakımda hipotermi durumunda tutuluyor. Bu uygulanan tedavilerden biri. Diğer…

Azure Cosmos DB Emulator Çalışmıyor.

Merhaba, Bugün Azure Cosmos DB'ye bir göz attım. Kullanımını anlamak için kendi bilgisayarımıza bir emulator(Azure Cosmos DB Emulator) kurabiliyoruz. Bunu kurup çalıştırdığımda DocumentDB.StartupEntryPoint.exe'nin hata verdiğini gördüm. Hatanın detayını eventviewer'dan şöyle gördüm: