該賞金到期in 4天。此問題的答案有資格獲得 100聲望獎勵。 維克多想引起對這個問題的更多關注。
我有一個 DbContext 設定為使用 Cosmos DB,如下所示:
public class AuthenticationCosmosDataContext : DbContext, IUnitOfWork
{
private readonly CosmosOptions cosmosOptions;
public DbSet<Settings> Settings { get; set; }
public AuthenticationCosmosDataContext(DbContextOptions<AuthenticationCosmosDataContext> options, IOptions<CosmosOptions> cosmosOptions) : base(options)
{
this.cosmosOptions = cosmosOptions.Value;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultContainer(cosmosOptions.DefaultContainer);
modelBuilder.Entity<Settings>().ToContainer(cosmosOptions.DefaultContainer);
modelBuilder.ApplyConfiguration(new SettingsConfiguration());
}
這是從 Startup.cs 設定的,如下所示:
services.AddDbContext<AuthenticationCosmosDataContext>((serviceProvider, options) =>
{
var cosmosOptions = serviceProvider.GetRequiredService<IOptions<CosmosOptions>>().Value;
options.UseCosmos(cosmosOptions.AccountEndpoint, cosmosOptions.AccountKey, cosmosOptions.DatabaseName);
現在, SettingsConfiguration 中沒有太多內容:
builder.HasKey(x => x.Id).HasName("id");
builder.HasPartitionKey(x => x.Id);
設定如下所示:
public class Settings
{
public string Id { get; set; }
public int SomeId { get; private set; }
public string Type { get; private set; }
public int AnotherId { get; private set; }
我試過從資料庫中查詢資料,購買一切回傳空或 0 結果:
await cosmosContext.Settings.FirstOrDefaultAsync().ConfigureAwait(false); // returns null
await cosmosContext.Settings.CountAsync().ConfigureAwait(false); // returns 0
連接似乎很好,因為沒有例外,我確實必須對我的模型進行一些調整,因為與檔案有些不匹配。
可能出什么問題了?
更新:配置中的 HasName() 方法似乎沒有按預期作業。如果我將欄位從“Id”重命名為“id”,它會按預期作業。尋找正確設定配置的方法
uj5u.com熱心網友回復:
您應該使用builder.Property(p => p.Id).ToJsonProperty("id");.
uj5u.com熱心網友回復:
不確定它是否有幫助,但是您不必覆寫 OnConfiguring 方法嗎?:
public class OptionsContext : DbContext
{
#region Configuration
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));
});
#endregion
}
另外:您可以通過代碼在 Db 中創建元素嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/356461.html
標籤:C# 。网 实体框架 azure-cosmosdb 数据库上下文
上一篇:如何使用物體框架連接字串使用AzureKeyVault
下一篇:哪里需要客戶評估?
