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.
Içerir: Barındırma tümleştirmesi —&
Client tümleştirme
MySQL, verileri yönetmek ve işlemek için Yapılandırılmış Sorgu Dili (SQL) kullanan açık kaynak bir İlişkisel Veritabanı Yönetim Sistemidir (RDBMS). Küçük projelerden büyük ölçekli kurumsal sistemlere kadar birçok farklı ortamda kullanılır ve buluta özel bir uygulamada mikro hizmetleri destekleyen verileri barındırmak popüler bir seçimdir.
.NET Aspire Pomelo MySQLEntity Framework Core tümleştirmesi, mevcut MySQL veritabanlarına bağlanmanıza veya .NETile mysql
'dan yeni örnekler oluşturmanıza olanak tanır.
Barındırma entegrasyonu
MySQL barındırma tümleştirmesi, sunucuyu MySqlServerResource türü ve veritabanını MySqlDatabaseResource türü olarak modeller. Bu türlere ve API'lere erişmek için 📦 projesinde Aspire.Hosting.MySql NuGet paketini ekleyin.
dotnet add package Aspire.Hosting.MySql
Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.
MySQL sunucu kaynağı ve veritabanı kaynağı ekleme
Uygulama ana bilgisayar projenizde AddMySql çağırarak bir MySQL kaynak oluşturucu ekleyin ve döndürin. Döndürülen kaynak oluşturucusunun çağrısını zincirleyin ve AddDatabase kaynağına MySQL veritabanı kaynağı ekleyin.
var builder = DistributedApplication.CreateBuilder(args);
var mysql = builder.AddMySql("mysql")
.WithLifetime(ContainerLifetime.Persistent);
var mysqldb = mysql.AddDatabase("mysqldb");
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(mysqldb)
.WaitFor(mysqldb);
// After adding all resources, run the app...
Not olarak
SQL Server kapsayıcısı yavaş başlatıldığından, gereksiz yeniden başlatmaları önlemek için kalıcı ömür döngüsünü kullanmak en iyisidir. Daha fazla bilgi için bkz. kapsayıcı kaynak ömrü.
.NET
.NET Aspire, önceki örnekte mysql
görüntüsüyle gösterildiği gibi uygulama konağına bir kapsayıcı görüntüsü eklediğinde, yerel makinenizde yeni bir MySQL örneği oluşturur. Veritabanı eklemek için MySQL kaynak oluşturucunuza (mysql
değişkeni) başvuru kullanılır. Veritabanı mysqldb
olarak adlandırılır ve ardından ExampleProject
'e eklenir.
MySQL kaynağı, username
root
ve password
yöntemi kullanılarak oluşturulan rastgele bir CreateDefaultPasswordParameter içeren varsayılan kimlik bilgilerini içerir.
Uygulama sunucusu çalıştırıldığında, parola uygulama sunucusunun gizli deposunda saklanır.
Parameters
bölümüne eklenir, örneğin:
{
"Parameters:mysql-password": "<THE_GENERATED_PASSWORD>"
}
Parametrenin adı mysql-password
, ama aslında sadece kaynak adını -password
sonekiyle biçimlendiriyor. Daha fazla bilgi için geliştirme aşamasında uygulama gizli bilgilerinin güvenli depolanması bölümüne bakınız ve ASP.NET Coreparametreleriyle kaynağı ekleyin MySQL.
WithReference yöntemi, ExampleProject
'deki mysqldb
adlı bağlantıyı yapılandırır.
İpucu
Mevcut bir MySQL sunucusuna bağlanmak isterseniz bunun yerine AddConnectionString'ı arayın. Daha fazla bilgi için bkz. Var olan kaynaklara başvurma.
Veri birimiyle MySQL kaynağı ekleyin.
SQL Server kaynağına veri birimi eklemek için WithDataVolume kaynağında SQL Server yöntemini çağırın:
var builder = DistributedApplication.CreateBuilder(args);
var mysql = builder.AddMySql("mysql")
.WithDataVolume();
var mysqldb = mysql.AddDatabase("mysqldb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mysqldb)
.WaitFor(mysqldb);
// After adding all resources, run the app...
Veri hacmi, MySQL sunucu verilerini kapsayıcısının yaşam döngüsü dışında kalıcı hale getirmek için kullanılır. Veri birimi, /var/lib/mysql
kapsayıcısının SQL Server yoluna bağlanır ve name
parametresi sağlanmazsa ad rastgele oluşturulur. Veri hacimleri hakkında daha fazla bilgi ve neden bağlamalarıyerine tercih edildiklerine ilişkin ayrıntılar için Docker belgelerine bakınız: Birimler.
Uyarı
Parola, veri biriminde depolanır. Veri birimi kullanıldığında ve parola değiştiğinde, birimi silene kadar çalışmayacaktır.
Önemli
Bazı veritabanı tümleştirmeleri, .NET AspireMySQL tümleştirmesi de dahil olmak üzere, Azure Container Apps (ACA) ortamına dağıtıldıktan sonra veri birimlerini başarıyla kullanamaz. Bunun nedeni, ACA'nın kapsayıcıları veri birimlerine bağlamak için İleti Bloğu 'nu (SMB) kullanması Server ve bazı sistemlerin bu bağlantıyı kullanamamalarıdır. Pano'da Aspire , bu sorundan etkilenen bir veritabanının Durumu Etkinleştirme veya Etkinleştirme Başarısız oldu ancak hiçbir zaman Çalışıyor olarak listelenmez.
Bir Kubernetes kümeye, örneğin AzureKubernetes Hizmetler (AKS)'e dağıtım yaparak sorunu çözebilirsiniz. Daha fazla bilgi için .NET.NET Aspire dağıtımlarıbkz.
MySQL kaynağını veri bağlama ile ekleyin
MySQL kaynağına veri bağlaması eklemek için WithDataBindMount yöntemini çağırın:
var builder = DistributedApplication.CreateBuilder(args);
var mysql = builder.AddMySql("mysql")
.WithDataBindMount(source: @"C:\MySql\Data");
var db = sql.AddDatabase("mysqldb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mysqldb)
.WaitFor(mysqldb);
// After adding all resources, run the app...
Önemli
Veri
Kapsayıcı yeniden başlatmaları arasında MySQL verilerini sürekli tutmak için veri bağlamaları, konak makinenin dosya sistemine dayanır. Veri bağlama, C:\MySql\Data
kapsayıcısında, konak makinedeki Windows üzerindeki /MySql/Data
yoluna (veya Unixüzerindeki MySQL yoluna) monte edilir. Veri bağlamaları hakkında daha fazla bilgi için Docker belgelerine bakın: Bağlamaları Bağlama.
Parametrelerle MySQL kaynağı ekleme
Kök MySQL parolasını açıkça belirtmek istediğinizde, bunu bir parametre olarak geçirebilirsiniz. Aşağıdaki alternatif örneği göz önünde bulundurun:
var password = builder.AddParameter("password", secret: true);
var mysql = builder.AddMySql("mysql", password)
.WithLifetime(ContainerLifetime.Persistent);
var mysqldb = mysql.AddDatabase("mysqldb");
var myService = builder.AddProject<Projects.ExampleProject>()
.WithReference(mysqldb)
.WaitFor(mysqldb);
Daha fazla bilgi için bkz.dış parametreler.
PhpMyAdmin kaynağı ekleme
phpMyAdmin, MySQLiçin popüler bir web tabanlı yönetim aracıdır. Veritabanları, tablolar, görünümler ve dizinler gibi MySQL nesnelere göz atmak ve bunları değiştirmek için kullanabilirsiniz. .NET .NET Aspire çözümünüzde phpMyAdmin kullanmak için WithPhpMyAdmin yöntemini çağırın. Bu yöntem, phpMyAdmin'i barındıran çözüme yeni bir kapsayıcı kaynağı ekler ve bunu MySQL kapsayıcısına bağlar:
var builder = DistributedApplication.CreateBuilder(args);
var mysql = builder.AddMySql("mysql")
.WithPhpMyAdmin();
var db = sql.AddDatabase("mysqldb");
builder.AddProject<Projects.ExampleProject>()
.WithReference(mysqldb)
.WaitFor(mysqldb);
// After adding all resources, run the app...
Çözümü çalıştırdığınızda, .NET.NET Aspire panosu phpMyAdmin kaynaklarını bir uç noktayla görüntüler. PhpMyAdmin'i yeni bir tarayıcı sekmesinde görüntülemek için uç nokta bağlantısını seçin.
Barındırma entegrasyon sağlık kontrolleri
MySQL barındırma tümleştirmesi, MySQL kaynağı için otomatik olarak bir sistem durumu denetimi ekler. Sistem durumu denetimi, MySQL sunucusunun çalıştığını ve bu sunucuyla bağlantı kurulabileceğini doğrular.
Barındırma tümleştirmesi, 📦 AspNetCore.HealthChecks.MySql NuGet paketine dayanır.
Client entegrasyonu
.NET Aspire Pomelo MySQL Entity Framework tümleştirmesine başlamak için, istemciyi kullanan yani 📦Aspire istemcisini barındıran uygulama projesine NuGet paketini yükleyin.
dotnet add package Aspire.Pomelo.EntityFrameworkCore.MySql
Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.
Bir MySQL veritabanı bağlamı ekleme
İstemci kullanan projenizin Program.cs dosyasında, herhangi bir AddMySqlDbContext üzerinde IHostApplicationBuilder uzantı yöntemini çağırarak bağımlılık ekleme kapsayıcısı aracılığıyla kullanılmak üzere bir DbContext kaydedin. yöntemi bir bağlantı adı parametresi alır.
builder.AddMySqlDbContext<ExampleDbContext>(connectionName: "mysqldb");
İpucu
connectionName
parametresi, uygulama ana bilgisayar projesine SQL Server veritabanı kaynağı eklenirken kullanılan adla eşleşmelidir. Başka bir deyişle, AddDatabase
'ı çağırdığınızda ve mysqldb
'yi çağırırken, AddMySqlDbContext
olarak sağladığınız aynı isim kullanılmalıdır. Daha fazla bilgi için bkz. MySQL sunucu kaynağı ve veritabanı kaynağı ekleme.
Bir hizmetten ExampleDbContext
nesnesi almak için:
public class ExampleService(ExampleDbContext context)
{
// Use context...
}
Bağımlılık ekleme hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme.
Bir MySQL veritabanı bağlamını zenginleştir.
Veritabanı bağlamını almak ve bunu bağımlılık ekleme kapsayıcısına eklemek için standart Entity Framework yöntemini kullanmayı tercih edebilirsiniz:
builder.Services.AddDbContext<ExampleDbContext>(options =>
options.UseMySql(builder.Configuration.GetConnectionString("mysqldb")
?? throw new InvalidOperationException("Connection string 'mysqldb' not found.")));
Not olarak
GetConnectionString yöntemine geçirdiğiniz bağlantı dizesi adı, uygulama ana bilgisayar projesine MySQL kaynağı eklenirken kullanılan adla eşleşmelidir. Daha fazla bilgi için bkz. MySQL sunucu kaynağı ve veritabanı kaynağı ekleme.
Veritabanı bağlamını bu şekilde oluştururken daha fazla esnekliğe sahip olursunuz, örneğin:
- var olan yapılandırma kodunu .NET.NET Aspireiçin yeniden yazmadan veritabanı bağlamı için yeniden kullanabilirsiniz.
- Veritabanı işlemlerini değiştirmek için Entity Framework Core önleyiciler kullanabilirsiniz.
- Bazı durumlarda daha iyi performans gösterebilecek Entity Framework Core bağlam havuzu kullanmamayı seçebilirsiniz.
Bu yöntemi kullanırsanız, .NET yöntemini çağırarak veritabanı bağlamını .NET AspireEnrichMySqlDbContextstili yeniden denemeler, sistem durumu denetimleri, günlüğe kaydetme ve telemetri özellikleriyle geliştirebilirsiniz:
builder.EnrichMySqlDbContext<ExampleDbContext>(
configureSettings: settings =>
{
settings.DisableRetry = false;
settings.CommandTimeout = 30 // seconds
});
settings
parametresi, PomeloEntityFrameworkCoreMySqlSettings sınıfının bir örneğidir.
Konfigürasyon
.NET Aspire Pomelo MySQLEntity Framework Core tümleştirmesi, veritabanı bağlantısını projenizin gereksinimlerine ve kurallarına göre yapılandırmak için birden çok seçenek sağlar.
Bağlantı dizesi kullanma
ConnectionStrings
yapılandırma bölümünden bir bağlantı dizesi kullanırken, builder.AddMySqlDatabaseDbContext<TContext>()
çağırırken bağlantı dizesinin adını sağlayabilirsiniz:
builder.AddMySqlDatabaseDbContext<MyDbContext>("mysql");
Ardından bağlantı dizesi ConnectionStrings
yapılandırma bölümünden alınır:
{
"ConnectionStrings": {
"mysql": "Server=mysql;Database=mysqldb"
}
}
EnrichMySqlDbContext
, bir ConnectionStrings
'nin çağrıldığı noktada kaydedilmesini beklediğinden, DbContext
yapılandırma bölümünü kullanmayacak.
Daha fazla bilgi için MySqlConnector: ConnectionString belgelerinebakın.
Yapılandırma sağlayıcılarını kullanma
.NET Aspire Pomelo MySQLEntity Framework Core tümleştirmesi Microsoft.Extensions.Configuration'ü destekler.
PomeloEntityFrameworkCoreMySqlSettings anahtarını kullanarak appsettings.json gibi yapılandırma dosyalarından Aspire:Pomelo:EntityFrameworkCore:MySql
yükler.
Aşağıdaki örnekte, kullanılabilir seçeneklerden bazılarını yapılandıran bir appsettings.json gösterilmektedir:
{
"Aspire": {
"Pomelo": {
"EntityFrameworkCore": {
"MySql": {
"ConnectionString": "YOUR_CONNECTIONSTRING",
"DisableHealthChecks": true,
"DisableTracing": true
}
}
}
}
}
Tam MySQL tümleştirme JSON şemasını görmek için bkz. Aspire. Pomelo.EntityFrameworkCore.MySql/ConfigurationSchema.json.
Satır içi temsilcileri kullanın
Ayrıca bazı ya da tüm seçenekleri satır içi ayarlamak için Action<PomeloEntityFrameworkCoreMySqlSettings>
temsilcisini de geçirebilirsiniz; örneğin, koddan sağlık kontrollerini devre dışı bırakmak için.
builder.AddMySqlDbContext<MyDbContext>(
"mysqldb",
static settings => settings.DisableHealthChecks = true);
veya
builder.EnrichMySqlDbContext<MyDbContext>(
static settings => settings.DisableHealthChecks = true);
Client entegrasyon sağlık kontrolleri
Varsayılan olarak, tüm hizmetler için .NET.NET Aspireistemci entegrasyonlarısağlık kontrolleri ile etkindir. Benzer şekilde, birçok .NET.NET Aspirebarındırma entegrasyonu sağlık kontrol uç noktalarını da etkinleştirir. Daha fazla bilgi için bkz:
- C#'de .NET uygulama sağlık kontrolleri
- ASP.NET Core 'da sağlık denetimleri
.NET Aspire Pomelo MySQLEntity Framework Core tümleştirmesi:
-
PomeloEntityFrameworkCoreMySqlSettings.DisableHealthChecks
false
olduğunda sağlık kontrolünü ekler, bu da EF Core'nin CanConnectAsync yöntemini çağırır. - Uygulamanın trafiği kabul etmeye hazır olarak kabul edilmesi için tüm kayıtlı sistem durumu denetimlerinin geçmesi gerektiğini belirten
/health
HTTP uç noktasıyla tümleşir.
Gözlemlenebilirlik ve telemetri
.NET
.NET Aspire tümleştirmeleri, bazen gözlemlenebilirliğin sütunlarıolarak bilinen, Günlük, İzleme ve Ölçüm yapılandırmalarını otomatik olarak ayarlar. Tümleştirme gözlemlenebilirliği ve telemetri hakkında daha fazla bilgi için bkz.
Loglama
.NET Aspire Pomelo MySQLEntity Framework Core tümleştirmesi aşağıdaki günlük kategorilerini kullanır:
Microsoft.EntityFrameworkCore.ChangeTracking
Microsoft.EntityFrameworkCore.Database.Command
Microsoft.EntityFrameworkCore.Database.Connection
Microsoft.EntityFrameworkCore.Database.Transaction
Microsoft.EntityFrameworkCore.Infrastructure
Microsoft.EntityFrameworkCore.Migrations
Microsoft.EntityFrameworkCore.Model
Microsoft.EntityFrameworkCore.Model.Validation
Microsoft.EntityFrameworkCore.Query
Microsoft.EntityFrameworkCore.Update
İzleme
.NET Aspire Pomelo MySQLEntity Framework Core tümleştirmesi, OpenTelemetrykullanarak aşağıdaki izleme etkinliklerini oluşturacaktır.
MySqlConnector
Ölçüm
.NET Aspire Pomelo MySQLEntity Framework Core tümleştirmesi şu anda aşağıdaki ölçümleri destekler:
- MySqlConnector:
db.client.connections.create_time
db.client.connections.use_time
db.client.connections.wait_time
db.client.connections.idle.max
db.client.connections.idle.min
db.client.connections.max
db.client.connections.pending_requests
db.client.connections.timeouts
db.client.connections.usage
Ayrıca bkz.
.NET Aspire