İyi günler dilerim Türk Hack Team ailesi.
Bugün sizler ile Asp.Net Core'un temellerini inceliyeceğiz ve razor sayfalarına model ekleyip bir database kuracağız.
Asp.Net Core Nedir?
Asp.Net Core, Microsoft tarafından geliştirilen açık kaynak kodlu herkesin kolayca kullanabileceği bir web framework'üdür. .NET üzerinde çalışır. Web scripti tasarlamak içinde kullanılabilinir. Not:Asp.Net Core öğrenmeden önce php veya C# öğrenebilirsiniz.
Asp.Net Core'a başlangıç
İlk başta .Net Core'u yüklememiz gerekiyor bunun için işe İndirme linki üzerinden kendi bilgisayarınızın platformuna uygun bir şekilde kurabilirsiniz.
Simdi bir web projesi oluşturalım. Bunun için ise terminalimize geliyoruz ve
şeklinde bir web applicationu oluşturabiliriz.
Simdi bir web projesi oluşturalım. Bunun için ise terminalimize geliyoruz ve
Kod:
dotnet new webapp -o TürkHackTeamDers
Simdi ise web applicationumuzun doğru çalışıp çalışmadığını kontrol edelim. Simdi yazmamız gereken komutlar,
Kod:
[/B][/SIZE][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][SIZE=5][B][CENTER]cd TürkHackTeamDers
dotnet run
Gördüğünüz üzere sorunsuz bir şekilde çalışıyor. Fakat biz bu sayfaya girmek istediğimizde bu sayfanın güvensiz olduğunu bize söylüyor bunu çözmek için ise,
komudunu terminale giriyoruz.
Ardından tekrar çalıştırdığımızda sorunun ortadan kalktığını görebilirsiniz. Simdi kod editörümüz ile projemize girelim. Ben genellikle Visual Studio Code'u kullanıyorum fakat siz Visual Studio 2022 veya Rider gibi kod editörlerinide kullanabilirsiniz.
Kod:
dotnet dev-certs https --trust
Ardından tekrar çalıştırdığımızda sorunun ortadan kalktığını görebilirsiniz. Simdi kod editörümüz ile projemize girelim. Ben genellikle Visual Studio Code'u kullanıyorum fakat siz Visual Studio 2022 veya Rider gibi kod editörlerinide kullanabilirsiniz.
Model ekleyip database kurma
Simdi Razor Pages'lerde bir veri modeli eklemeye bakalım. Ben örnek olarak bir blog sitesi tasarlamak istiyorum ve her postum için ayrı bir sayfa açılmasını istediğimi düşünelim. Simdi bunun için yeni bir model açmamız gerekiyor. Örnek bir model şeması,
Belirli bir model oluşturduğumuza göre simdi bizim belirli kütüphaneleri ve araçları projemize dahil etmemiz gerekiyor. Bunun için ise projemizin dosyasına gelip
C#:
using System.ComponentModel.DataAnnotations;
namespace TürkHackTeamDers.Models
{
public class Post
{
public int ID { get; set; }
public string Title { get; set; } = string.Empty;
public string Text {get;set;} = string.Empty;
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
}
}
Belirli bir model oluşturduğumuza göre simdi bizim belirli kütüphaneleri ve araçları projemize dahil etmemiz gerekiyor. Bunun için ise projemizin dosyasına gelip
Kod:
dotnet tool install -g dotnet-aspnet-codegenerator --version 6.0.0-rc.1.21464.1[/B][/COLOR][/SIZE][/CENTER]
[SIZE=5][COLOR=rgb(255, 255, 255)][B][CENTER]dotnet tool install --global dotnet-ef --version 6.0.0-rc.1.21452.10
dotnet add package Microsoft.EntityFrameworkCore.Design --prerelease
dotnet add package Microsoft.EntityFrameworkCore.SQLite --prerelease
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --prerelease
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --prerelease
bu komutları giriyoruz.
Simdi bu postlar için bir iskele kurmamı gerekiyor Bunun için ise çalıştırmamız gereken komut,
şeklinde olucaktır.
Bu işlemide başarı ile bitirdikten sonra bizim yukarıda kurmuş olduğumuz kütüphanelerden olan sqlite kütüphanesini projemize dahil etmemiz gerekiyor. Bu işlemi gerçekleştirmek için projemizin Program.cs dosyasına giriyoruz.
Simdi bu postlar için bir iskele kurmamı gerekiyor Bunun için ise çalıştırmamız gereken komut,
Kod:
dotnet-aspnet-codegenerator razorpage -m Blog -dc PostContext -udl -outDir Models/Post --referenceScriptLibraries -sqlite
Bu işlemide başarı ile bitirdikten sonra bizim yukarıda kurmuş olduğumuz kütüphanelerden olan sqlite kütüphanesini projemize dahil etmemiz gerekiyor. Bu işlemi gerçekleştirmek için projemizin Program.cs dosyasına giriyoruz.
Bu kısma
şeklinde C# kodumuzu giriyoruz.
Ve evet fark eden arkadaşlarımız olmuştur size daha kolay bir şekilde anlatmak için Visual Studio Code yerine Rider editörüne geçmiş bulunmaktayım. Bu aşamadan sonra ise kendimize bir database şeması kurmak için
C#:
[/B][/COLOR][/SIZE][COLOR=rgb(255, 255, 255)][SIZE=5][B]if (builder.Environment.IsDevelopment())
{
builder.Services.AddDbContext<BlogContext>(options =>
options.UseSqlite(builder.Configuration.GetConnectionString("BlogContext")));
}
else
{
builder.Services.AddDbContext<BlogContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("BlogContext")));
}
Ve evet fark eden arkadaşlarımız olmuştur size daha kolay bir şekilde anlatmak için Visual Studio Code yerine Rider editörüne geçmiş bulunmaktayım. Bu aşamadan sonra ise kendimize bir database şeması kurmak için
Kod:
dotnet ef migrations add InitialCreate[/B][/SIZE][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][SIZE=5][B][CENTER]dotnet ef database update
terminalde bu komutu çalıştırıyoruz.
Bundan sonra bizim bazı ayarlar yapmamız gerekiyor appsettings.json dosyasının içerisinde bu komutları giriyoruz.
Bundan sonra bizim bazı ayarlar yapmamız gerekiyor appsettings.json dosyasının içerisinde bu komutları giriyoruz.
Kod:
{[/B][/SIZE][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][SIZE=5][B][CENTER] "Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"BlogContext": "Data Source=BlogDatabase.db"
}
}
Bundan sonra yapmamız gereken bütün işlemler tamamlanıyor. Bundan sonra bizim Veritabanını için bir çekirdek oluşturmamız gerekiyor. Modeller kısmına bir adet DataBasePost.cs isminde bir dosya oluşturalım. Bu dosyanın içeriği ise
C#:
using Microsoft.EntityFrameworkCore;
using TürkHackTeamDers.Pages;
namespace TürkHackTeamDers.Modeller
{
public static class DataBasePost
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new BlogContext(
serviceProvider.GetRequiredService<
DbContextOptions<BlogContext>>()))
{
if (context == null || context.Posts == null)
{
throw new ArgumentNullException("Null RazorPagesMovieContext");
}
// Look for any movies.
if (context.Posts.Any())
{
return; // DB has been seeded
}
context.Posts.AddRange(
new Post()
{
Title = "Gunaydin",
ReleaseDate = DateTime.Parse("2022-1-1"),
Text = "Merhaba Dunya",
ID = 1
},
new Post()
{
Title = "Gunaydin",
ReleaseDate = DateTime.Parse("2022-1-1"),
Text = "Merhaba Dunya",
ID = 2
}
);
context.SaveChanges();
}
}
}
}
C#:
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
SeedData.Initialize(services);
}
Ardından kodu çalıştırdığımızda projemize database dosyaları geliyor.
Bu bölümde çok basit bir şekilde .net kurulumunu, razor pagelere model eklemeyi, database kurulumunu ve daha birkaç ayarı nasıl yapıcağımızı öğrendik. Diğer hafta bu dersin ikinci bölümü gelicektir iyi günler dilerim sağlıcakla kalın.





