标签: azure-cosmosdb

EFCore .net6 Cosmos 迁移问题

.NET6 EFCore 和 Cosmos 迁移问题。需要一些帮助。

大家好。我是 .Net 世界的新手,我面临着 Google 未能帮助我解决的问题。你是我最后的问候。

所以。我正在尝试使用 EFCore 6.0.3 从我的小 HomeControlCenter 项目连接到 Azure Cosmos DB

错误:

Unable to resolve service for type 'Microsoft.EntityFrameworkCore.Migrations.IMigrator'. This is often because no database provider has been configured for this DbContext. A provider can be configured by overriding the 'DbContext.OnConfiguring' method or by using 'AddDbContext' on the application service provider. If 'AddDbContext' is used, then also ensure that your DbContext type accepts a DbContextOptions<TContext>
object in its constructor and passes it …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework azure-cosmosdb

2
推荐指数
1
解决办法
1774
查看次数

从 Azure Cosmos DB 获取多个文档的最快方法

我有一个 SQL API Cosmos DB 集合,其 id 和分区键均等于/id

给定 ID 列表,我需要获取所有这些文档。使用 .NET SDK (v3.25) 时,建议使用以下哪种 Container 类方法来获得最低延迟:

  1. 同时,使用ReadItemAsync来读取所有文档。
  2. 用于ReadManyItemsAsync阅读所有文档。
  3. GetItemQueryIterator与以下形式的 SQL 查询一起使用SELECT * FROM c where c.id in ('id-1', 'id-2', ...)

azure-cosmosdb

2
推荐指数
1
解决办法
1226
查看次数

将DocumentDB的文档ID与类属性相关联

有没有办法将Document的唯一ID与我班级的属性相关联?

例如:

public class Product
    {


        //Associate this to ID
        public string ProductId { get; set; }
        public string UserId
        {
            get;
            set; 
        }

        public string ProductName
        {
            get;
            set;
        }
}
Run Code Online (Sandbox Code Playgroud)

问题是,我不想为我的对象创建和维护唯一的ID,而是重用DocumentDB在编写文档后创建的Id.

azure-cosmosdb

1
推荐指数
1
解决办法
244
查看次数

AWS SimpleDb与Azure DocumentDb有何不同?两者如何与ElasticSearch不同

就......而言

  1. 可扩展性,
  2. 性能,
  3. 保养,
  4. 易用性/学习曲线
  5. 成本,

按照重要的顺序,但不介意一般的答案,因为我很欣赏我可能要求太多:)

谢谢

编辑:我正在寻找一个将作为单一权威数据存储的数据库,我需要存储的文件的所有属性,以便出于各种商业原因进行索引.因此我知道其他解决方案不会做我想要的.

azure amazon-simpledb elasticsearch azure-cosmosdb

1
推荐指数
1
解决办法
331
查看次数

如何使用DocumentDb查询DateTimeOffset

假设我将记录插入以下模型的Azure DocumentDb中:

public class Message
{
    [JsonProperty(PropertyName = "tid")]
    public string Id { get; set; }

    [JsonProperty(PropertyName = "start")]
    public DateTimeOffset StartAt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它们都自动存储为字符串.我希望能够查询StartAt,所以我在其上添加了一个RngeIndex.我使用Azure门户验证索引是否正常工作.

有了这个,我加载DocumentDb .NET SDK并尝试以下查询:

var since = DateTimeOffset.UtcNow.Subtract(duration);
return Client.CreateDocumentQuery<T>(Collection.DocumentsLink)
    .Where(m => m.AtStart > since)
    .AsEnumerable();
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误

[DocumentQueryException: Constant of type 'System.DateTimeOffset' is not supported.]
   Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitConstant(ConstantExpression inputExpression) +3204
   Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitBinary(BinaryExpression inputExpression, TranslationContext context) +364
   Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitBinary(BinaryExpression inputExpression, TranslationContext context) +349
   Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitScalarLambda(Expression inputExpression, TranslationContext context) +230
   Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitWhere(ReadOnlyCollection`1 arguments, TranslationContext context) +55
   Microsoft.Azure.Documents.Linq.ExpressionToSql.VisitMethodCall(MethodCallExpression inputExpression, TranslationContext …
Run Code Online (Sandbox Code Playgroud)

azure-cosmosdb

1
推荐指数
1
解决办法
1486
查看次数

保存和测试存储过程/触发器(可能是用户定义的函数)用于分区集合

尝试保存对已在分区集合中创建的存储过程的修改时,我收到以下错误:

无法保存脚本

以下是Azure门户中的详细信息:

操作名称无法保存脚本时间戳Fri Feb 17 2017 08:46:32 GMT-0500(东部标准时间)事件发起者 - 说明数据库帐户:MyDocDbAccount,脚本:bulkImport,消息:{"code":400," body":"{\"code \":\"BadRequest \",\"message \":\" 不支持对具有多个分区的集合中的脚本进行替换和upsert.

有问题的存储过程是可在此处找到的示例"bulkImport"脚本.

azure azure-cosmosdb

1
推荐指数
2
解决办法
889
查看次数

将JSON反序列化为多个继承的类

当我从DocumentDB序列化JSON对象时,我Control没有OptionsControl使用Options属性反序列化为。

我的课程如下Control

public class Control : IControl
{
    public Guid Id { get; set; }

    public virtual Enums.ControlType Type { get; set; }

    public string PropertyName { get; set; }

    public string ControlCssClass { get; set; }

    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我也有OptionsControl,它继承自Control

public class OptionsControl : Control
{
    public IDictionary<string, string> Options;
}
Run Code Online (Sandbox Code Playgroud)

我也有ClickableControl

public class ClickableControl : Control
{
    public string …
Run Code Online (Sandbox Code Playgroud)

c# reflection json azure-cosmosdb

1
推荐指数
1
解决办法
1431
查看次数

使用Azure DocumentDB(CosmosDB).Net SDK

看到这个问题后,我不确定为什么DocDb实例的以下代码不起作用

var userApps = _docs.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(Constants.Databases.Applications.ID, Constants.Databases.Applications.Collections.USER_APPS),
        new SqlQuerySpec(@"SELECT r.appId FROM ROOT r WHERE r.userId = @userId", (@"@userId", userId).ToSqlParameters()))
    .ToList()
    .Select(s => (string)s.appId);
var query = _docs.CreateDocumentQuery<Document>(UriFactory.CreateDocumentCollectionUri(Constants.Databases.Applications.ID, Constants.Databases.Applications.Collections.APP_DEFINITIONS),
        new SqlQuerySpec(@"SELECT r.id, r.appName FROM ROOT r WHERE r.appId IN (@userApps)", (@"@userApps", userApps.ToArray()).ToSqlParameters()),
        new FeedOptions { EnableCrossPartitionQuery = true })
    .AsDocumentQuery();
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,尽管我知道数据应该返回我一个结果集,但每次它都返回为空。

到目前为止的故障排除

的变体 .Select()

将我输入的字符串返回string.Join到以逗号分隔的列表中。

例如:

var userApps = string.Join(@",", _docs.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(Constants.Databases.Applications.ID, Constants.Databases.Applications.Collections.USER_APPS),
        new SqlQuerySpec(@"SELECT r.appId FROM ROOT r WHERE r.userId = @userId", (@"@userId", userId).ToSqlParameters())) …
Run Code Online (Sandbox Code Playgroud)

azure azure-cosmosdb

1
推荐指数
1
解决办法
817
查看次数

Azure Cosmos/Document DB触发器

我试图在一个集合上设置一个触发器,它似乎没有绊倒.触发器是使用Azure门户准备的.我正在尝试特定的逻辑 - 但最后只是在Azure站点上放置了一个示例.触发器逻辑如下:

var context = getContext();
var request = context.getRequest();

// document to be created in the current operation
var documentToCreate = request.getBody();

// validate properties
if (!("timestamp" in documentToCreate)) 
{
  var ts = new Date();
  documentToCreate["my timestamp"] = ts.getTime();
}

// update the document that will be created
request.setBody(documentToCreate);
Run Code Online (Sandbox Code Playgroud)

触发器无效.似乎没有出现错误,我不确定发生了什么.

注意:触发器是预先设置的触发器.对于我列出的触发器逻辑,我没有使用"my timestamp"属性创建文档.我还测试了相同概念中的其他场景,我想在创建的文档中添加属性.

azure azure-cosmosdb

1
推荐指数
1
解决办法
2290
查看次数

在Azure上使用CosmosDB进行微服务

我已经阅读了一些有关微服务的信息,并且最受欢迎的方法似乎是为每个微服务提供一个单独的数据库。关于Azure的CosmosDB,这是否意味着每个服务都有单独的表?架构此的最佳方法是什么?

azure microservices azure-cosmosdb

1
推荐指数
1
解决办法
658
查看次数