.NET ve Entity Framework Core kullanarak Azure SQL Veritabanı Bağlan ve sorgular
Şunlar için geçerlidir:Azure SQL Veritabanı
Bu hızlı başlangıçta bir uygulamanın Azure SQL Veritabanı bir veritabanına nasıl bağlandığı ve .NET ve Entity Framework Core kullanarak sorgular nasıl gerçekleştirebileceğiniz açıklanmaktadır. Bu hızlı başlangıç, veritabanına bağlanmak için önerilen parolasız yaklaşımı izler. Parolasız bağlantılar hakkında daha fazla bilgiyi parolasız hub'dan öğrenebilirsiniz.
Önkoşullar
- Bir Azure aboneliği.
- Microsoft Entra ID (eski adıyla Azure Active Directory) ile kimlik doğrulaması için yapılandırılmış bir SQL veritabanı. Veritabanı oluştur hızlı başlangıcını kullanarak bir tane oluşturabilirsiniz.
- .NET 7.0 veya üzeri.
- ASP.NET ve web geliştirme iş yüküyle Visual Studio veya üzeri.
- Azure CLI'nın en son sürümü.
- Entity Framework Core araçlarının en son sürümü:
- Visual Studio kullanıcıları Entity Framework Core için Paket Yöneticisi Konsolu araçlarını yüklemelidir.
- .NET CLI kullanıcıları Entity Framework Core için .NET CLI araçlarını yüklemelidir.
Veritabanı sunucusunu yapılandırma
Azure SQL Veritabanı için güvenli, parolasız bağlantılar için belirli veritabanı yapılandırmaları gerekir. Hem yerel hem de barındırılan ortamlardaki Azure SQL Veritabanı düzgün bir şekilde bağlanmak için Azure'daki mantıksal sunucunuzda aşağıdaki ayarları doğrulayın:
Yerel geliştirme bağlantıları için mantıksal sunucunuzun yerel makine IP adresinizin ve diğer Azure hizmetlerinin bağlanmasına izin verecek şekilde yapılandırıldığından emin olun:
Sunucunuzun Ağ sayfasına gidin.
Ek yapılandırma seçeneklerini göstermek için Seçili ağlar radyo düğmesini değiştirin.
Yerel makinenizin IPv4 adresinden bağlantıları etkinleştirecek bir güvenlik duvarı kuralı eklemek için İstemci IPv4 adresinizi (xx.xx.xx.xx) ekle'yi seçin. Alternatif olarak, istediğiniz belirli bir IP adresini girmek için + Güvenlik duvarı kuralı ekle'yi de seçebilirsiniz.
Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver onay kutusunun seçili olduğundan emin olun.
Uyarı
Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver ayarını etkinleştirmek, üretim senaryoları için önerilen bir güvenlik uygulaması değildir. Gerçek uygulamalar daha güçlü güvenlik duvarı kısıtlamaları veya sanal ağ yapılandırmaları gibi daha güvenli yaklaşımlar uygulamalıdır.
Aşağıdaki kaynaklarda veritabanı güvenlik yapılandırmaları hakkında daha fazla bilgi edinebilirsiniz:
- Azure SQL Veritabanı güvenlik duvarı kurallarını yapılandırın.
- Özel uç noktalarla bir sanal ağ yapılandırın.
Sunucuda ayrıca Microsoft Entra kimlik doğrulaması etkinleştirilmiş ve atanmış bir Microsoft Entra yönetici hesabı olmalıdır. Yerel geliştirme bağlantıları için, Microsoft Entra yönetici hesabı yerel olarak Visual Studio'da veya Azure CLI'da oturum açabileceğiniz bir hesap olmalıdır. Mantıksal sunucunuzun Microsoft Entra Id sayfasında sunucunuzda Microsoft Entra kimlik doğrulamasının etkinleştirilip etkinleştirilmediğini doğrulayabilirsiniz.
Kişisel bir Azure hesabı kullanıyorsanız hesabınızı sunucu yöneticisi olarak atamak için Microsoft Entra kurulumunu yaptığınızdan ve Azure SQL Veritabanı için yapılandırdığınızdan emin olun. Şirket hesabı kullanıyorsanız, Microsoft Entra Id büyük olasılıkla sizin için zaten yapılandırılmış olacaktır.
Proje oluşturma
Bu bölümdeki adımlar .NET CLI veya Visual Studio 2022 kullanarak bir .NET Minimal Web API'si oluşturur.
Visual Studio menü çubuğunda Dosya>Yeni>Proje... seçeneğine gidin.
İletişim kutusu penceresinde proje şablonu arama kutusuna ASP.NET girin ve ASP.NET Çekirdek Web API'sinin sonucunu seçin. İletişim kutusunun alt kısmındaki İleri'yi seçin.
Proje Adı için DotNetSQL girin. Kalan alanlar için varsayılan değerleri bırakın ve İleri'yi seçin.
Çerçeve için .NET 7.0'ı seçin ve Denetleyicileri kullan seçeneğinin işaretini kaldırın (en düşük API'leri kullanmak için işaretini kaldırın). Bu hızlı başlangıçta uç nokta oluşturma ve yapılandırma süreçlerini kolaylaştırmak için Minimal API şablonu kullanılmaktadır.
Oluştur’u seçin. Yeni proje Visual Studio ortamında açılır.
Projeye Entity Framework Core ekleme
.NET ve Entity Framework Core kullanarak Azure SQL Veritabanı bağlanmak için aşağıdaki yöntemlerden birini kullanarak projenize üç NuGet paketi eklemeniz gerekir:
Çözüm Gezgini penceresinde projenin Bağımlılıklar düğümüne sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.
Sonuçta elde edilen pencerede EntityFrameworkCore için arama yapın. Aşağıdaki paketleri bulun ve yükleyin:
- Microsoft.EntityFrameworkCore: Temel Entity Framework Core işlevselliği sağlar
- Microsoft.EntityFrameworkCore.SqlServer: Mantıksal sunucuya bağlanmak için ek bileşenler sağlar
- Microsoft.EntityFrameworkCore.Design: Entity Framework geçişlerini çalıştırma desteği sağlar
Alternatif olarak, cmdlet'i Paket Yöneticisi Konsolu penceresinde de çalıştırabilirsinizInstall-Package
:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Design
Azure SQL Veritabanı bağlanmak için kodu ekleme
Entity Framework Core kitaplıkları, Azure SQL Veritabanı parolasız bağlantılar uygulamak için ve Azure.Identity
kitaplıklarını temel alırMicrosoft.Data.SqlClient
. Kitaplık, Azure'da Azure.Identity
parolasız kimlik doğrulamasını işleyen DefaultAzureCredential adlı bir sınıf sağlar.
DefaultAzureCredential
birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangisinin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar. Azure Kimlik kitaplığına genel bakış , kimlik bilgilerinin arandığı DefaultAzureCredential
sırayı ve konumları açıklar.
Entity Framework Core ve temel alınan DefaultAzureCredential
sınıfı kullanarak Azure SQL Veritabanı bağlanmak için aşağıdaki adımları tamamlayın:
Aşağıdaki kodla eşleşmesi
appsettings.Development.json
için dosyaya birConnectionStrings
bölüm ekleyin. ve<your-database-name>
yer tutucularını güncelleştirmeyi<your database-server-name>
unutmayın.Parolasız bağlantı dizesi, Entity Framework Core'un
Authentication=Active Directory Default
Azure hizmetlerine bağlanmak için kullanmasınıDefaultAzureCredential
sağlayan bir yapılandırma değeri içerir. Uygulama yerel olarak çalıştırıldığında, Visual Studio'da oturum açtığınız kullanıcıyla kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldıktan sonra, daha sonra yapılandırabileceğiniz barındırılan uygulamayla ilişkili yönetilen kimliği aynı kod bulur ve uygular.Not
Parolasız bağlantı dizesi, kullanıcı adları, parolalar veya erişim anahtarları gibi gizli diziler içermediğinden kaynak denetimine işlemeleri güvenlidir.
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "AZURE_SQL_CONNECTIONSTRING": "Data Source=passwordlessdbserver.database.windows.net; Initial Catalog=passwordlessdb; Authentication=Active Directory Default; Encrypt=True;" } }
aşağıdaki kodu
Program.cs
dosyasını okuyanvar app = builder.Build();
kod satırının üstüne ekleyin. Bu kod aşağıdaki yapılandırmaları gerçekleştirir:Yerel geliştirme için dosyadan
appsettings.Development.json
veya barındırılan üretim senaryoları için ortam değişkenlerinden parolasız veritabanı bağlantı dizesi alır.Entity Framework Core
DbContext
sınıfını .NET bağımlılık ekleme kapsayıcısıyla kaydeder.var connection = String.Empty; if (builder.Environment.IsDevelopment()) { builder.Configuration.AddEnvironmentVariables().AddJsonFile("appsettings.Development.json"); connection = builder.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING"); } else { connection = Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING"); } builder.Services.AddDbContext<PersonDbContext>(options => options.UseSqlServer(connection));
sınıfını kullanarak
PersonDbContext
veritabanındaki varlıkları almak ve eklemek için aşağıdaki uç noktaları yukarıdakiapp.Run()
dosyanın altınaProgram.cs
ekleyin.app.MapGet("/Person", (PersonDbContext context) => { return context.Person.ToList(); }) .WithName("GetPersons") .WithOpenApi(); app.MapPost("/Person", (Person person, PersonDbContext context) => { context.Add(person); context.SaveChanges(); }) .WithName("CreatePerson") .WithOpenApi();
Son olarak ve
PersonDbContext
sınıflarını dosyanın en altınaProgram.cs
ekleyinPerson
. Person sınıfı, veritabanınınPersons
tablosundaki tek bir kaydı temsil eder. sınıfı,PersonDbContext
Person veritabanını temsil eder ve kod aracılığıyla üzerinde işlem gerçekleştirmenize olanak tanır. Hakkında daha fazla bilgiyiDbContext
Entity Framework Core için Başlarken belgelerinde bulabilirsiniz.public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } public class PersonDbContext : DbContext { public PersonDbContext(DbContextOptions<PersonDbContext> options) : base(options) { } public DbSet<Person> Person { get; set; } }
Veritabanını oluşturmak için geçişleri çalıştırma
Entity Framework Core kullanarak veritabanı şemasını veri modelinizle eşleşecek şekilde güncelleştirmek için bir geçiş kullanmanız gerekir. Geçişler, veritabanı şemasını uygulamanızın veri modeliyle eşitlenmiş durumda tutmak için oluşturabilir ve artımlı olarak güncelleştirebilir. Geçişlere genel bakış bölümünde bu düzen hakkında daha fazla bilgi edinebilirsiniz.
Projenizin köküne bir terminal penceresi açın.
Veritabanını oluşturabilen bir ilk geçiş oluşturmak için aşağıdaki komutu çalıştırın:
Add-Migration InitialCreate
Migrations
Proje dizininizde benzersiz sayılarla birlikte adlıInitialCreate
bir dosyayla birlikte bir klasör görünmelidir. Aşağıdaki komutu kullanarak veritabanını oluşturmak için geçişi çalıştırın:Update-Database
Entity Framework Core araçları, Azure'da sınıfı tarafından tanımlanan veritabanı şemasını
PersonDbContext
oluşturur.
Uygulamayı yerel olarak test etme
Uygulama yerel olarak test edilmeye hazırdır. Veritabanınızın yöneticisi olarak ayarladığınız hesapla Visual Studio'da veya Azure CLI'da oturum açtığınızdan emin olun.
API projesini başlatmak için Visual Studio'nun üst kısmındaki çalıştır düğmesine basın.
Swagger kullanıcı arabirimi sayfasında POST yöntemini genişletin ve Deneyin'i seçin.
Örnek JSON'ı ad ve soyadı değerlerini içerecek şekilde değiştirin. Veritabanına yeni bir kayıt eklemek için Yürüt'e tıklayın. API başarılı bir yanıt döndürür.
Swagger kullanıcı arabirimi sayfasında GET yöntemini genişletin ve Deneyin'i seçin. Yürüt'e tıklayın ve yeni oluşturduğunuz kişi döndürülür.
Azure App Service’e dağıtma
Uygulama Azure'a dağıtılmaya hazırdır. Visual Studio bir Azure Uygulaması Hizmeti oluşturabilir ve uygulamanızı tek bir iş akışında dağıtabilir.
Uygulamanın durdurulup başarıyla derlendiğinden emin olun.
Visual Studio'nun Çözüm Gezgini penceresinde üst düzey proje düğümüne sağ tıklayın ve Yayımla'yı seçin.
Yayımlama iletişim kutusunda dağıtım hedefi olarak Azure'ı ve ardından İleri'yi seçin.
Belirli bir hedef için Azure Uygulaması Hizmeti (Windows) ve ardından İleri'yi seçin.
Dağıtılacak yeni bir App Service oluşturmak için yeşil + simgeyi seçin ve aşağıdaki değerleri girin:
Ad: Varsayılan değeri bırakın.
Abonelik adı: Dağıtılacak aboneliği seçin.
Kaynak grubu: Yeni'yi seçin ve msdocs-dotnet-sql adlı yeni bir kaynak grubu oluşturun.
Barındırma Planı: Barındırma planı iletişim kutusunu açmak için Yeni'yi seçin. Varsayılan değerleri bırakın ve Tamam'ı seçin.
Özgün iletişim kutusunu kapatmak için Oluştur'u seçin. Visual Studio, Azure'da App Service kaynağını oluşturur.
Kaynak oluşturulduktan sonra uygulama hizmetleri listesinden seçildiğinden emin olun ve İleri'yi seçin.
API Management adımında, alttaki Bu adımı atla onay kutusunu ve ardından Son'u seçin.
Uygulamayı Azure'a dağıtmak için yayımlama profili özetinin sağ üst kısmındaki Yayımla'yı seçin.
Dağıtım tamamlandığında, Visual Studio barındırılan uygulamayı görüntülemek için tarayıcıyı başlatır, ancak bu noktada uygulama Azure'da düzgün çalışmaz. Yine de verilerinizi almak için App Service ile SQL veritabanı arasındaki güvenli bağlantıyı yapılandırmanız gerekir.
App Service'i Azure SQL Veritabanı Bağlan
App Service örneğini Azure SQL Veritabanı bağlamak için aşağıdaki adımlar gereklidir:
- App Service için yönetilen kimlik oluşturma.
Microsoft.Data.SqlClient
Uygulamanıza dahil edilen kitaplık, yerel Visual Studio kullanıcınızı keşfettiği gibi yönetilen kimliği otomatik olarak bulur. - Bir SQL veritabanı kullanıcısı oluşturun ve bunu App Service yönetilen kimliğiyle ilişkilendirin.
- Veritabanı kullanıcısına okuma, yazma ve diğer izinlere izin veren SQL rolleri atayın.
Bu adımları uygulamak için kullanabileceğiniz birden çok araç vardır:
Service Bağlan or, Azure'daki farklı hizmetler arasındaki kimliği doğrulanmış bağlantıları kolaylaştıran bir araçtır. Service Bağlan veya şu anda komutunu kullanarak Azure CLI aracılığıyla App Service'i SQL veritabanına bağlamayı az webapp connection create sql
destekler. Bu tek komut sizin için yukarıda belirtilen üç adımı tamamlar.
az webapp connection create sql
-g <your-resource-group>
-n <your-app-service-name>
--tg <your-database-server-resource-group>
--server <your-database-server-name>
--database <your-database-name>
--system-identity
Service Bağlan veya tarafından yapılan değişiklikleri App Service ayarlarından doğrulayabilirsiniz.
App Service'inizin Kimlik sayfasına gidin. Sistem tarafından atanan sekmesinin altında Durum Açık olarak ayarlanmalıdır. Bu değer, uygulamanız için sistem tarafından atanan yönetilen kimliğin etkinleştirildiği anlamına gelir.
App Service'inizin Yapılandırma sayfasına gidin. Bağlan ion dizeleri sekmesinin altında AZURE_SQL_CONNECTIONSTRING adlı bir bağlantı dizesi görmeniz gerekir. Oluşturulan parolasız bağlantı dizesi görüntülemek için Değer metnini göstermek için tıklayın'ı seçin. Bu bağlantı dizesi adı, uygulamanızda yapılandırdığınız adla aynı hizaya geldiğinden, Azure'da çalışırken otomatik olarak bulunur.
Önemli
Bu çözüm başlangıç için basit bir yaklaşım sağlasa da, kurumsal üretim ortamları için en iyi yöntem değildir. Bu senaryolarda uygulama, tek bir yükseltilmiş kimlik kullanarak tüm işlemleri gerçekleştirmemelidir. Belirli görevler için belirli izinlere sahip birden çok kimlik yapılandırarak en az ayrıcalık ilkesini uygulamaya çalışmanız gerekir.
Aşağıdaki kaynaklarda veritabanı rollerini ve güvenliğini yapılandırma hakkında daha fazla bilgi edinebilirsiniz:
Öğretici: Azure SQL Veritabanı'da veritabanının güvenliğini sağlama
Dağıtılan uygulamayı test edin
Azure SQL Veritabanı bağlantısının çalışıp çalışmadığını test etmek için uygulamanın URL'sine göz atın. Uygulamanızın URL'sini App Service'e genel bakış sayfasında bulabilirsiniz. /person
Yerel olarak test ettiğiniz aynı uç noktaya göz atmak için URL'nin sonuna yolu ekleyin.
Yerel olarak oluşturduğunuz kişinin tarayıcıda görüntülenmesi gerekir. Tebrikler! Uygulamanız artık hem yerel hem de barındırılan ortamlardaki Azure SQL Veritabanı bağlı.
Kaynakları temizleme
Azure SQL Veritabanı ile çalışmayı bitirdiğinizde, istenmeyen maliyetlerden kaçınmak için kaynağı silin.
Azure portalı arama çubuğunda Azure SQL'i arayın ve eşleşen sonucu seçin.
Veritabanı listesinde veritabanınızı bulun ve seçin.
Azure SQL Veritabanı Genel Bakış sayfasında Sil'i seçin.
Açılan Azure'da silmek istediğinizden emin olun... sayfasında, onaylamak için veritabanınızın adını yazın ve sil'i seçin.
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin