Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Azure SQL Veritabanı
Bu hızlı başlangıç, Azure SQL Veritabanı'de bir uygulamayı veritabanına nasıl bağlayacağınızı ve .NET ile Entity Framework Core kullanarak sorgular nasıl yapılacağını açıklar. Bu hızlı başlangıç, veritabanına bağlanmak için önerilen parolasız yaklaşımı izler. Şifresiz bağlantılar hakkında daha fazla bilgi edinmek için şifresiz hub'a bakabilirsiniz.
Ö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ı. Hızlı başlangıç: Tek bir veritabanı oluşturma - Azure SQL Veritabanı seçeneğini kullanarak bir veritabanı oluşturabilirsiniz.
- .NET 10.0 veya daha sonra.
- Visual Studio veya üzeri, ASP.NET ve web geliştirme iş yüküyle.
- 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 Azure SQL 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:
Azure portalında, kaynak menüsünden Güvenlik altında Ağ'ı seçin.
Ek yapılandırma seçeneklerini göstermek için Seçili ağlar düğmesini seçin.
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 File>NewProject'e> gidin.
Diyalog penceresinde
ASP.NETproje şablonu arama kutusuna girin ve ASP.NET Core Web API sonucunu seçin. İletişim kutusunun alt kısmındaki İleri'yi seçin.Proje Adı için
DotNetSQLgirin. Kalan alanlar için varsayılan değerleri koruyun ve İleri'yi seçin.Framework için .NET 10.0'ı seçin ve Denetleyicileri Kullan seçeneğini 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ı'e bağlanmak için, aşağıdaki NuGet paketlerini projenize ekleyin, aşağıdaki yöntemlerden birini kullanın:
Çö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 -
Microsoft.EntityFrameworkCore.Tools: Visual Studio Paket Yöneticisi Konsol araçları için destek sağlar (yalnızca PowerShell) -
Microsoft.AspNetCore.OpenApi: İsteğe bağlı - OpenAPI dokümantasyon üretimini destekler -
Swashbuckle.AspNetCore.SwaggerUI: Isteğe bağlı - uygulama uç noktalarıyla OpenAPI arayüz etkileşimi sağlar
Azure SQL Veritabanı bağlanmak için kodu ekleme
Entity Framework Core kitaplıkları, Azure SQL Veritabanı'na parolasız bağlantılar uygulamak için Microsoft.Data.SqlClient ve Azure.Identity kitaplıklarını temel alır. 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:
ConnectionStringsdosyasına, aşağıdaki kodla eşleşmesi için birappsettings.Development.jsonbölümü ekleyin. yerine<server>.database.windows.netbağlanmak istediğiniz parolasız veritabanı sunucusunun adını ve<database>veritabanının adını yazın.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "AZURE_SQL_CONNECTIONSTRING": "Data Source=<server>.database.windows.net;Initial Catalog=<database>;Authentication=Active Directory Default;Encrypt=True;" } }Not
Veritabanı bağlantı dizesindeki
<your database-server-name>ve<your-database-name>yer tutucularını güncelleştirmeyi unutmayın. Parolasız bağlantı dizeleri, kullanıcı adları, parolalar veya erişim anahtarları gibi gizli diziler içermediğinden kaynak denetimine güvenli bir şekilde işlenebilir.Parolasız bağlantı dizesi, Entity Framework Core'un Azure hizmetlerine bağlanmak için
Authentication=Active Directory Defaultkullanmasını sağlayanDefaultAzureCredentialyapılandırma değerini 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, aynı kod daha sonra yapılandırdığınız barındırılan uygulamayla ilişkili yönetilen kimliği bulur ve uygular.Program.csdosyasının içeriğini aşağıdaki kodla değiştirin:using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(); builder.Services.AddOpenApi(); 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)); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/openapi/v1.json", "v1"); }); } app.MapGet("/", () => "Hello world!"); app.MapGet("/Person", (PersonDbContext context) => context.Person.ToList()); app.MapPost("/Person", (Person person, PersonDbContext context) => { context.Add(person); context.SaveChanges(); }); app.Run(); public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } public class PersonDbContext(DbContextOptions<PersonDbContext> options) : DbContext(options) { public DbSet<Person> Person { get; set; } }Yukarıdaki kod aşağıdaki adımları işler:
- Yerel geliştirme için dosyadan
appsettings.Development.jsonveya barındırılan üretim senaryoları için ortam değişkenlerinden parolasız veritabanı bağlantı dizesi alır. - Entity Framework Core
DbContextsınıfını .NET bağımlılık ekleme kapsayıcısıyla kaydeder. Hakkında daha fazla bilgiyiDbContextEntity Framework Core için Başlarken belgelerinde bulabilirsiniz. - .NET 10.0 OpenAPI desteğini SwaggerUI ile yapılandırarak, uygulama uç noktaları ve veritabanıyla etkileşim kurabileceğiniz bir arayüz sağlar.
- Veritabanındaki varlıkları almak ve eklemek için uç noktalar ekler.
- Veritabanı tablosundaki tek bir kaydı temsil eden
Personsınıfını ve .NET bağımlılık ekleme kapsayıcısına kaydedilmiş olanPersonssınıfını tanımlar.
- Yerel geliştirme için dosyadan
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üncellemek için bir migrasyon kullanın. 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. Bu desen hakkında daha fazla bilgi edinmek için göçler genel bakışına bakınız.
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 InitialCreateProje dizininizde benzersiz sayılar eklenmiş
Migrationsadlı bir dosya ile birlikte birInitialCreateklasörü görünmelidir. Aşağıdaki komutu kullanarak veritabanını oluşturmak için geçişi çalıştırın ve Entity Framework Core araçları Azure'da sınıf tarafından tanımlanan veritabanı şemasınıPersonDbContextoluşturur.Update-Database
Uygulamayı yerel olarak test etme
Uygulama yerel olarak test etmeye hazır. Veritabanınız için yönetici olarak ayarladığınız hesapla Visual Studio veya Azure CLI'ye giriş yaptığınızdan emin olun.
API projesini başlatmak için Visual Studio'nun üstündeki çalıştırma butonunu seçin.
Swagger UI sayfasında (örneğin,
https://localhost:<port>/swagger),POSTyöntemini genişletin ve Deneyin seçeneğini belirleyin.Örnek JSON'ı ad ve aile adı 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.
GETSwagger kullanıcı arabirimi sayfasında 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ır. Visual Studio bir Azure Uygulaması Hizmeti oluşturabilir ve uygulamanızı tek bir iş akışında dağıtabilir.
Uygulamanın durdurulduğundan ve başarılı şekilde oluşturulduğundan 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 onu seçtiğinizden emin olun ve ardından Sonraki'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. Varsayılan uç noktadan gelen Hello world mesajı görüyorsunuz. Ancak bu noktada veritabanı uç noktaları 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ı'a bağlama
App Service örneğini Azure SQL Veritabanı'e bağlamak için aşağıdaki adımları tamamlayın:
App Service için yönetilen kimlik oluşturma.
Microsoft.Data.SqlClientUygulamanı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 birden fazla araç kullanabilirsiniz:
Hizmet Bağlayıcısı, Azure'daki farklı hizmetler arasındaki kimliği doğrulanmış bağlantıları kolaylaştıran bir araçtır. Service Connector şu anda Azure CLI şifresiz uzantısı kullanılarak bir App Service'i SQL veritabanına bağlamayı desteklemektedir.
Hizmet Bağlayıcısı parolasız uzantısını yükleyin veya yükseltin:
az extension add --name serviceconnector-passwordless --upgradeWeb uygulamanızı veritabanına bağlamak için sistem tarafından atanan yönetilen bir kimlik kullanarak komutu çalıştırın
az webapp connection create sql. Yer tutucuları uygun değerlerle değiştirin: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
App Service ayarlarında Service Connector tarafından yapılan değişiklikleri doğrulayabilirsiniz.
Uygulama Hizmetiniz için Kimlik sayfasına gidin. Sistem tarafından atanan sekmesinin altında, DurumAçı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.
Uygulama Hizmetiniz için Yapılandırma sayfasına gidin. Bağlantı dizeleri sekmesinde adlı
AZURE_SQL_CONNECTIONSTRINGbir bağlantı dizesi görmeniz gerekir. Değeri göstermek için tıklayın metnini seçerek oluşturulan parolasız bağlantı dizesini görüntüleyin. Bu bağlantı dizesinin adı, uygulamanızda yapılandırdığınız adla hizalandığından, Azure'da çalışırken otomatik olarak bulunur.
Önemli
Bu çözüm başlangıç için temel bir yaklaşım sunsa da, kurumsal üretim ortamları için en iyi uygulama değildir. Bu durumlarda, uygulama tüm işlemleri tek, yükseltilmiş bir kimlikle gerçekleştirmemelidir. En az ayrıcalık ilkesini, belirli görevler için belirli izinlere sahip birden fazla kimlik yapılandırarak uygulayın. Veritabanı rollerini ve güvenliğini yapılandırma hakkında daha fazla bilgi için bkz:
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şi tarayıcıda görünmelidir. Tebrikler, uygulamanız artık hem yerel hem de barındırılan ortamlarda Azure SQL Veritabanı'na bağlandı.
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.
Not
Örnek uygulamayı Azure'a dağıttıysanız, istenmeyen maliyetlerden kaçınmak için App Service kaynağını da arayıp sildiğinizden emin olun.
İlgili içerik
- Öğretici: Azure SQL Veritabanı'da veritabanının güvenliğini sağlama
- Azure SQL Veritabanı'e veritabanı erişimini yetkilendirin
- Azure SQL Veritabanı ve SQL Yönetilen Örneği güvenlik özelliklerine genel bakış
- Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği ile ortak güvenlik gereksinimlerini karşılamaya yönelik kılavuz