Bu bölümde, bir veritabanındaki işlemleri bir model üzerinden nasıl yöneteceğimizi içerir. Veritabanı bağlantısı için güncel bir teknoloji olan Entity Framework Core (EF Core) kullanılmıştır. EF Core, SQL cümleleri yazmak yerine daha basit kodlarla veritabanına erişmemizi ve yönetmemizi sağlayan bir ORM (Object-Relational Mapping) çerçevesidir. Bir model dosyası, veritabanındaki tablolardaki yapıyı sınıf olarak saklandığı dosyalardır. Bu dosyaların EF Core direkt bir bağlantısı yoktur. Veritabanında saklanan verilerin özelliklerini tanımlar.
01.03.01. SQL Server Bağlantısı ve Ayarlanması
SQL Server bağlantısı için bir SQL Server’a bağlantı kurmanız gerekir. SQL Server Express sürümleri ücretsiz ve giriş seviyesi veritabanları oluşturmak için kullanılabilir. Giriş seviyesi demişken 10 GB boyuta ulaşabilen küçük, veri odaklı uygulamalarda kullanabilirsiniz. Öncelikle “Services” (Hizmetler) bölümünden SQL Server’ın çalışıp çalışmadığını kontrol edin. Servisi bu bölümden durdurabilir, tekrar başlatabilir kısacası durumu kontrol edebilirsiniz. Eğer bu servis yüklü değilse burada linke tıklayın.
İkinci kontrol noktası, appsettings.json dosyasındaki connectionstring anahtar değeridir.
1 2 3 |
"ConnectionStrings": { "RazorPagesMovieContext": "Server=.\\SQLExpress;Database=RazorPagesMovieContext-a5236542-0f17-42ab-a825-faf19a5178f9;Trusted_Connection=True;MultipleActiveResultSets=true" } |
Burada bağlantı ayarları yapılıyor. Özellikle Server anahtarının doğru olmasına dikkat edin.
Eğer Visual Studio Code üzerinden SQL Server bağlantısı düşünürseniz SQL Server extension’ını kurabilirsiniz. Sonra sql uzantılı bir dosya yaratın, bu sırada ufak bir kurulum gerçekleşebilir. Ama, öncelikle bir bağlantı yaratmamız gerekiyor.
- CTRL+SHIFT+P (or F1) ile MS SQL: Connect seçin
- Create Connection Profile (Bir bağlantı profili oluştur) seçin.
- Aşağıdaki değişkenleri tanımlayın
Setting | Description |
---|---|
Server name | Bir SQL Server bağlantı ismi olmalıdır. Eğer kişisel bilgisayarınızda kurulu ise bu değer localhost olabilir. Ancak, SQL Server Express kurulur ise bu değer .\SQLExpress olmalıdır. Ayrıca uzak bir sql server bağlantısı ise bir makine ismi veya ip bilgisi olmalıdır. Eğer özel bir port numarası belirtmek isterseniz, virgül ile ayrılmalıdır. Örneğin, localhost, 1041 gibi. |
[Optional] Database name | Bağlantı kurulmak istenen Veritabanı. Eğer belirli değilse direkt geçebilirsiniz. |
Authentication Type | Doğrulama tipi, Eğer .\SQLExpress ise Integrated seçin, aksi takdirse SQL Login seçin. Bu durumda UserName ve Password sorulur. |
User name | SQL Server kullanıcı ismi, genelde SQL Server’larda admin kullanıcısı SA ismine sahiptir. |
Password (SQL Login) | Username için özel şifre. |
Save Password? | Her seferinde şifre sormasını istemiyorsanız YES seçeneği ile şifreyi kaydedebilirsiniz. |
[Optional] Enter a name for this profile | Bağlantı profil ismi seçimliktir. İstediğiniz bir ismi girebilirsiniz. |
Visual Studio Code connection işlemi başarılı ile tamamlandığında sağ alt tarafta gösterir. Eğer bağlantı tamam ise sql dosyanızı açıp “SELECT * FROM ” yazıp, bir Veritabanı seçip, otomatik tamamlama ile bir tablodan ilk kayıtlarınızı seçebilirsiniz. Çalıştırmak için CTRL+SHIFT+E yapmanız yeterlidir. Çıkan sonucun üzerine tıklayıp JSON veya CSV formatında kaydedebilirsiniz. Daha fazla bilgi için tıklayın.
01.03.02. Bir model dosyası oluşturma
Öncelikle “Models” adında bir klasör oluşturalım. Ardından bu klasör içine “Movie.cs” dosyasını oluşturalım ve aşağıdaki kodu ekleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System; namespace RazorPagesMovie.Models { public class Movie { public int ID { get; set; } public string Title { get; set; } public DateTime ReleaseDate { get; set; } public string Genre { get; set; } public decimal Price { get; set; } } } |
Ardından Data klasörüne MovieContext.cs dosyasına aşağıdaki kodu ekleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using Microsoft.EntityFrameworkCore; namespace RazorPagesMovie.Models { public class MovieContext : DbContext { public MovieContext(DbContextOptions<MovieContext> options) : base(options) { } public DbSet<Movie> Movie { get; set; } } } |
Bir önceki kod, entity set için bir DbDet özelliği yaratır. EF terminolojisinde, bir entity set veritabanındaki table ile ilişkilidir ve bir entity table’daki satır (bir kayıt) anlamına gelir. Kodumuzun hatalı olup olmadığını bir derleyerek kontrol edin.
01.03.03. Scaffold the movie model (Movie model iskelesi oluşturma)
Scafford işlemi yapmak veritabanı klasik işlemleri olan Create, Read, Update ve Delete (CRUD) bir iskele oluşturma aşaması olarak görülebilir. Bu kadar kodu yazmak yerine otomatik üreteciler vardır. Bunun için öncelikle terminal ekranından bir scaffolding tool kuralım. Bunun için:
1 |
D:\Users\.....\RazorPagesMovie>dotnet tool install --global dotnet-aspnet-codegenerator |
Bu araç otomatik bir kod üreticidir. Örneğin, movie sınıfının kodlarını üretmek için:
1 |
D:\Users\.....\RazorPagesMovie>dotnet aspnet-codegenerator razorpage -m Movie -dc MovieContext -udl -outDir Pages\Movies --referenceScriptLibraries |
Eğer bir versiyon sorunu yaşamazsanız kodlar “Pages\Movies” klasörü içine otomatik olarak yaratılır. Buradaki parametreler:
Parametreler | Tanım |
---|---|
-m | Model ismi. |
-dc | Veri context’i. |
-udl | Layout ismi. |
-outDir | Kodlarının oluşacağı klasör. Buraya HTML ve Razor etiketlerini içeren bir view sayfası oluşur. |
–referenceScriptLibraries | Sayfalara _ValidationScriptsPartial ekler. Özellikle doğrulama işlemi için ayarları yapar. |
Kodu çalıştırabilirsiniz. https://localhost:5001/Movies adresine gittiğinizde eğer her şey yolunda ise kayıtları göreceksiniz. Eğer sorun var ise öncelikle Veritabanı bağlantısında sorun olmadığına emin olun. Diğer sorunlar hakkında bilgi almak için tıklayın.