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.
Warning
9.0'da Azure Cosmos DB sağlayıcısı üzerinde kapsamlı çalışmalar yapıldı. Sağlayıcıyı geliştirmek için bir dizi büyük etki yaratan önemli değişikliklerin yapılması gerekmiş olabilir; mevcut bir uygulamayı yükseltiyorsanız, lütfen önemli değişiklikler bölümünü dikkatle okuyun.
Bu veritabanı sağlayıcısı Entity Framework Core'un Azure Cosmos DB ile birlikte kullanılmasına izin verir. Sağlayıcı Entity Framework Core Projesi kapsamında tutulur.
Bu bölümü okumadan önce Azure Cosmos DB belgeleri hakkında bilgi sahibi olmanız kesinlikle önerilir.
Note
Bu sağlayıcı yalnızca NoSQL için Azure Cosmos DB ile çalışır.
Install
Microsoft.EntityFrameworkCore.Cosmos NuGet paketini yükleyin.
dotnet add package Microsoft.EntityFrameworkCore.Cosmos
Get started
Tip
Bu makalenin örneğini GitHub'da görüntüleyebilirsiniz.
Diğer sağlayıcılar için atılacak ilk adım UseCosmos'u çağırmaktır:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseCosmos(
"https://localhost:8081",
"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
databaseName: "OrdersDB");
Warning
Uç nokta ve anahtar basitlik için burada sabit kodlanmıştır, ancak bir üretim uygulamasında bunlar güvenli bir şekilde depolanmalıdır. Azure Cosmos DB'ye bağlanmanın farklı yolları için bkz . Bağlanma ve kimlik doğrulaması .
Bu örnekte Order, sahip olunan türStreetAddress ile bir referansa sahip basit bir varlıktır.
public class Order
{
public int Id { get; set; }
public int? TrackingNumber { get; set; }
public string PartitionKey { get; set; }
public StreetAddress ShippingAddress { get; set; }
}
public class StreetAddress
{
public string Street { get; set; }
public string City { get; set; }
}
Verileri kaydetme ve sorgulama normal EF desenini izler:
using (var context = new OrderContext())
{
await context.Database.EnsureDeletedAsync();
await context.Database.EnsureCreatedAsync();
context.Add(
new Order
{
Id = 1, ShippingAddress = new StreetAddress { City = "London", Street = "221 B Baker St" }, PartitionKey = "1"
});
await context.SaveChangesAsync();
}
using (var context = new OrderContext())
{
var order = await context.Orders.FirstAsync();
Console.WriteLine($"First order will ship to: {order.ShippingAddress.Street}, {order.ShippingAddress.City}");
Console.WriteLine();
}
Important
Gerekli kapsayıcıları oluşturmak ve modelde varsa tohum verilerini eklemek için EnsureCreatedAsync çağrısı yapılması gerekir. Ancak EnsureCreatedAsync, performans sorunlarına neden olabileceği için yalnızca dağıtım sırasında çağrılmalı, normal işlem sırasında çağrılmamalıdır.
Azure Cosmos DB SDK'sı, Azure Cosmos DB'deki yönetim düzlemi işlemleri için RBAC'i desteklemez. RBAC ile EnsureCreatedAsync yerine Azure Management API'sini kullanın.
Bağlanma ve kimlik doğrulaması
EF Core için Azure Cosmos DB sağlayıcısında UseCosmos yönteminin birden çok aşırı yüklemesi vardır. Bu aşırı yüklemeler, veritabanına bağlantı oluşturmanın farklı yollarını ve bağlantının güvenli olmasını sağlamanın farklı yollarını destekler.
Important
Azure Cosmos DB'deki verilere güvenli erişimi anlamanız ve bu sayede her bir UseCosmos yöntem aşırı yüklemesini kullanırken güvenlik etkileri ile en iyi uygulamaları kavramanız önemlidir.
Genellikle, anahtar kimlik bilgilerine sahip RBAC, önerilen erişim kontrol mekanizmasıdır.
| Bağlantı Mekanizması | UseCosmos Aşırı Yükleme | Daha Fazla Bilgi |
|---|---|---|
| Hesap uç noktası ve anahtarı | UseCosmos<DbContext>(accountEndpoint, accountKey, databaseName) |
Birincil/ikincil anahtarlar |
| Hesap uç noktası ve belirteç | UseCosmos<DbContext>(accountEndpoint, tokenCredential, databaseName) |
RBAC ve Kaynak belirteçleri |
| Bağlantı dizesi | UseCosmos<DbContext>(connectionString, databaseName) |
Hesap anahtarları ve bağlantı dizesi ile çalışma |
Azure Cosmos DB seçenekleri
Azure Cosmos DB sağlayıcısını tek bir bağlantı dizesi ile yapılandırmak ve bağlantıyı özelleştirmek için diğer seçenekleri belirtmek de mümkündür:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseCosmos(
"AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
databaseName: "OptionsDB",
options =>
{
options.ConnectionMode(ConnectionMode.Gateway);
options.WebProxy(new WebProxy());
options.LimitToEndpoint();
options.Region(Regions.AustraliaCentral);
options.GatewayModeMaxConnectionLimit(32);
options.MaxRequestsPerTcpConnection(8);
options.MaxTcpConnectionsPerEndpoint(16);
options.IdleTcpConnectionTimeout(TimeSpan.FromMinutes(1));
options.OpenTcpConnectionTimeout(TimeSpan.FromMinutes(1));
options.RequestTimeout(TimeSpan.FromMinutes(1));
});
Yukarıdaki kod bazı olası seçenekleri gösterir; bunlar aynı anda kullanılmak üzere tasarlanmamıştır. Yukarıda bahsedilen her seçeneğin etkisinin ayrıntılı açıklaması için Azure Cosmos DB Seçenekleri belgelerine bakın.