小编Ste*_*han的帖子

Microsoft Graph API 批量限制

这个问题是关于JSON批处理的两个问题

  1. 我发现批处理限制是 15 而不是提到的 20,为什么JSON Batching页面上没有提到限制对我来说是一个问题。如果我合并 15 个请求,它们都会成功,没问题。如果我执行 16 到 20 个请求,它们会随机开始失败。我是不是做错了什么?我没有使用图形客户端,因为它很长时间不支持批处理。我还创建了一个关于它的github 问题,但由于某种原因它被关闭了.....
  2. 我如何建议提高限额?如果可以将限制提高到 50,这将非常有用(限制它们应该在相同的上下文中,就像您可以从单个用户日历中添加/删除 50 个项目一样。)

我尝试批处理的请求是这些请求的组合:

  • 从用户日历中删除项目
  • 将项目添加到用户日历

似乎有些租户(这是一个多租户应用程序)的限制为 4,我们的租户限制为 15,这似乎是平均值。

如果我检查提到的 20,我会收到 HTTP 400 错误请求异常。但是具有 15 到 20 个“子请求”组合的批处理请求会产生 HTTP 200 Ok 响应,其中一些 json 描述子请求的状态。那里显示429状态。

{
    "id": "04",
    "status": 204,
    "headers": {
        "Cache-Control": "private"
    },
    "body": null
}
Run Code Online (Sandbox Code Playgroud)

对比

{
    "id": "12",
    "status": 429,
    "headers": {
        "Retry-After": "1",
        "Cache-Control": "private"
    },
    "body": {
        "error": {
            "code": "ApplicationThrottled", …
Run Code Online (Sandbox Code Playgroud)

microsoft-graph-api

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

使用 Cosmos DB 配置 EF Core 以存储字符串的 ICollection

实体框架有一些关于嵌入实体的很好的文档,但我不知道如何嵌入一个简单的字符串数组IEnumerable<string>

样板课

public class Post {
  public string Id {get;set;}
  public string Content {get;set;}
  public IEnumerable<string> Tags {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

这应该在 cosmos 中保存为:

{
  "id": "xxx",
  "content": "long content here",
  "tags": ["tag1", "tag2"],
  ...
}
Run Code Online (Sandbox Code Playgroud)

我知道我必须在OnModelCreating(ModelBuilder modelBuilder)上下文中配置一些东西。但我无法正确设置它。

我尝试过以下选项(以及其他几种ToJsonProperty方法):

  • modelBuilder.Entity<Post>().OwnsMany(p => p.Tags);
  • modelBuilder.Entity<Post>().OwnsMany<string>(p => p.Tags);

最终我希望能够根据这些标签进行查询,非常感谢任何帮助或正确方向的指示!

我也找到了这个答案,但是将数组转换为逗号分隔的字符串会达不到目的(因为这不允许我们查询这些帖子)。

其他人在 Microsoft 论坛上问了大致相同的问题,其中一位 Microsoft 员工表示,在纯 CosmosDB 中,可以在 cosmos 中嵌入字符串数组。

c# entity-framework-core azure-cosmosdb azure-cosmosdb-sqlapi

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

Microsoft Graph上的批量限制为5?

在尝试创建用于批量更新用户日历的deamon应用程序时,我偶然发现了以下文档:

由于您似乎可以在"不要将此API用于新项目API"中批量(也称合并)最多20个请求,但您最多只能使用新的Microsoft Graph API组合5个请求.

我发现没有批处理创建和删除100个日历项目大约需要40秒.由于应用程序管理变得如此简单,我想使用新的API,但是有没有任何更改,5请求批量限制将被删除,让我们说20就像旧的API一样?

office365api microsoft-graph

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

使用 CsvHelper 读取带有可选列的 CSV

我想读取一个包含一些可选列的 CSV 文件,因为我已经使用“?”定义了一个具有可选属性的类。但无法使其发挥作用。

public class MyItem
{
    public int Id { get; set; }
    public int? MyValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

映射类:

public sealed class MyItemMap : ClassMap<MyItem>
{
    public MyItemMap()
    {
        Map(m => m.Id);
        Map(m => m.MyValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是控制台应用程序:

static void Main(string[] args)
{
    using (var reader = new StreamReader(@"C:\Test2Delete\ConsoleAppCSV\MyItem.csv"))
    using (var csv = new CsvReader(reader))
    {
        csv.Configuration.RegisterClassMap(new MyItemMap());
        csv.Configuration.HeaderValidated = null;
        try
        {
            var records = csv.GetRecords<MyItem>();
            foreach (var r in records)
            {
                Console.WriteLine(r.Id + " …
Run Code Online (Sandbox Code Playgroud)

c# csvhelper

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

Masstransit EndpointConvention Azure 服务总线

我想知道我是否做错了什么,我希望MassTransit会自动ReceiveEndpointsEndpointConvention.

示例代码:

services.AddMassTransit(x =>
{
    x.AddServiceBusMessageScheduler();
    x.AddConsumersFromNamespaceContaining<MyNamespace.MyRequestConsumer>();
    x.UsingAzureServiceBus((context, cfg) =>
    {
        // Load the connection string from the configuration.
        cfg.Host(context.GetRequiredService<IConfiguration>().GetValue<string>("ServiceBus:ConnectionString"));
        cfg.UseServiceBusMessageScheduler();

        // Without this line I'm getting an error complaining about no endpoint convention for x could be found.
        EndpointConvention.Map<MyRequest>(new Uri("queue:queue-name"));

        cfg.ReceiveEndpoint("queue-name", e =>
        {
            e.MaxConcurrentCalls = 1;
            e.ConfigureConsumer<MyRequestConsumer>(context);
        });

        cfg.ConfigureEndpoints(context);
    });
});
Run Code Online (Sandbox Code Playgroud)

我认为EndpointConvention.Map<MyRequest>(new Uri("queue:queue-name"));在不指定队列名称的情况下允许发送到总线不需要这条线,或者我错过了什么?

await bus.Send<MyRequest>(new { ...});

masstransit

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