小编Col*_*ett的帖子

Angular 6材质:mat-tab-link由下划线栏选择

我的mat-tab-nav-bar网站有一个导航栏,但mat-tab-link蓝色下划线栏不会追逐活动按钮.它只停留在第一个按钮,不动.虽然在背景颜色改变的意义上,按钮确实变为活动状态,并且它们很好地路由到它们相应的页面.

这是app.component.ts:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  navLinks = [
    { path: '', label: 'The Problem' },
    { path: 'the-solution', label: 'The Solution' },
    { path: 'the-game', label: 'The Game' },
    { path: 'probability-calculator', label: 'Probability calculator' },
  ];
}
Run Code Online (Sandbox Code Playgroud)

这是app.component.html:

<nav mat-tab-nav-bar>
  <a mat-tab-link
     *ngFor="let link of navLinks"
     [routerLink]="link.path"
     routerLinkActive #rla="routerLinkActive"
     [active]="rla.isActive">
    {{link.label}}
  </a>
</nav>

<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)

这是app.module.ts …

navigationbar typescript angular-material angular

7
推荐指数
4
解决办法
2万
查看次数

如何在 MacOS 上为 git.path 配置 VS Code?

我在 Mac 上安装了 VS Code,并尝试将其连接到 git。但是 VS Code 表明它找不到 git。

我已经尝试将变量 git.path 修改为“/usr/bin”(我可以看到安装了 git)。但是,当启动 VS Code 时,它​​仍然表示 git 不存在。

git macos

7
推荐指数
2
解决办法
5248
查看次数

.Net Core2 EF MySQL在将外键列更改为可空时有问题

我正在开发一个应用程序,我通过Code First方法使用.Net Core 2,EF Core和MySQL作为数据库服务器.

我有2张桌子:

  1. 用户
  2. 雇员

用户表是包含用户信息的主表,Employee表是具有列ID_User的子表,如下所示:

 public class User : BaseEntity
    {
        public int ID_User { get; set; }
        public string Name { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }

        public virtual ICollection<Employee> Employees{get;set;}
    }



 public class Employee : Entity
    {
        public int ID_Employee { get; set; }
        public string Name { get; set; }

        public int ID_User { get; set; }

        public virtual User User { …
Run Code Online (Sandbox Code Playgroud)

.net mysql entity-framework .net-core asp.net-core

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

在 API 中抽象出对 IMemoryCache 的异步调用

我一直在使用类似于示例 1 的操作来异步缓存 .NET Core API 的 json 结果。MemoryCache是 的一个实例IMemoryCache

示例 1(按预期工作):

[HttpGet]
public async Task<IActionResult> MyAction() =>
    Json(await MemoryCache.GetOrCreateAsync(
        "MyController_MyAction", 
        entry => myService.GetAllAsync()
    ));
Run Code Online (Sandbox Code Playgroud)

Json()和的调用MemoryCache.GetOrCreate()在我的许多操作中重复出现。在我的真实应用中,还有更多重复的实现细节,例如设置AbsoluteExpirationRelativeToNow值和返回NotFound()空值。我想将所有这些抽象到一个共享方法中,以便每个操作仅将其独特的细节传递给共享方法的调用。

为了做到这一点,我为我的操作中的两个变量中的每一个提取了一个变量。例如:

示例 2(缓存既不更新也不检索):

[HttpGet]
public async Task<IActionResult> MyAction()
{
    var task = myService.GetAllAsync();
    const string cacheKey = "MyController_MyAction";
    return Json(await MemoryCache.GetOrCreateAsync(cacheKey, entry => task));
}
Run Code Online (Sandbox Code Playgroud)

下一步是提取一个共享方法,Get()如:

示例 3(不起作用,因为示例 2 不起作用):

[HttpGet]
public async Task<IActionResult> MyAction()
{
    var task = myService.GetAllAsync(); …
Run Code Online (Sandbox Code Playgroud)

c# async-await asp.net-core-mvc asp.net-core

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

options.UseOracle() 在 EF Core 中不可用

将 EF Core 与 Oracle.ManagedDataAccess.Core(2.18.3) 结合使用

尝试添加数据库上下文时无法调用“options.UseOracle”方法。

编译器抛出错误:“DbContextOptionsBuilder”不包含“UseOracle”的定义,并且找不到接受“DbContextOptionsBuilder”类型的第一个参数的可访问扩展方法“UseOracle”(您是否缺少 using 指令或程序集引用?)

请参阅下面的代码,它的最后一行没有编译,我的 nuget 参考包括 Oracle.ManagedDataAccess.Core(2.18.3)

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using EfGetStarted.AspNetCore.NewDb.Models;
using Microsoft.EntityFrameworkCore;
using Oracle.ManagedDataAccess.Client;

namespace EfGetStarted.AspNetCore.NewDb
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core asp.net-core oracle.manageddataaccess

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

ReSharper自定义模式突出ASPX蜜蜂叮咬/代码块

我正在使用一个旧的Web窗体应用程序,其中包含大量的<%= %>蜂窝代码块.我希望ReSharper标记这些并建议用编码版本替换<%: %>(见这里).

我试图通过这篇文章创建一个自定义模式,但是我不确定在开始和结束标记之间使用什么作为占位符.可用于ASPX页面的唯一占位符类型是标记名称,属性,属性值和内容占位符.这些似乎都没有选择(找到)蜜蜂叮咬代码块中的值.

由于我只需要找到/替换开始标记,我尝试使用<%=作为模式(不需要占位符),但是ReSharper不允许我保存它.它要求结束标记位于要保存的模式中.

如何配置ReSharper的建议更换<%= %><%: %>

.net asp.net resharper webforms pattern-matching

5
推荐指数
0
解决办法
90
查看次数

如何在 Automapper 和 Asp.Net Core 依赖注入中使用通用配置文件

我想创建将包含以下扩展方法的 .Net Core 类库:

public static class MyServiceExtensions
    {
        public static IServiceCollection AddMyService<TUserDto, TUserDtoKey, TUser, TUserKey>(this IServiceCollection services)
            where TUserDto : UserDto<TUserDtoKey>
            where TUser : User<TUserKey>
        {
            services.AddAutoMapper(config =>
            {
                config.AddProfile<UserMappingProfile<TUserDto, TUserDtoKey, TUser, TUserKey>>();
            });

            return services;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我有以下 Automapper 配置文件:

public class UserMappingProfile<TUserDto, TUserDtoKey, TUser, TUserKey> : Profile 
        where TUserDto : UserDto<TUserDtoKey>
        where TUser : User<TUserKey>
    {
        public UserMappingProfile()
        {
            CreateMap<TUserDto, TUser>(MemberList.Destination)
                .ForMember(x => x.Id, opts => opts.MapFrom(x => x.UserId));

            CreateMap<TUser, TUserDto > (MemberList.Source)
                .ForMember(x => x.UserId, opts …
Run Code Online (Sandbox Code Playgroud)

c# automapper .net-core asp.net-core

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

EF Core 2.1 HasData() 在后续迁移中为未更改的实体创建删除和重新插入

更新 8/29/18

new种子数据的inline -ing 中也看到了这个问题。打开了一个EF Core 问题。将使用任何发现更新问题。


我正在尝试使用EF Core 2.1 的播种机制。但是,我想从 json 平面文件加载种子数据,而不是硬编码新的 C# 对象。我写了下面的扩展方法,对于初始迁移效果很好。它查找命名为[MyEntity].jsonin 的文件并将DataPath它们反序列化为对象。

问题是,如果我添加后续迁移,即使没有更改模型、配置或 json 文件中的任何内容,新迁移也会删除每个实体并再次重新插入它们。因此,它Up()包含一堆删除,然后是一堆相同数据的插入。我怀疑这是因为 EF Core 不够聪明,无法识别它是一组相同的种子数据。

题:

有没有办法将 EF Core 2.1 种子与外部数据源(例如 json 文件)一起使用,而无需每次迁移都删除并重新插入数据?

我的播种扩展方法:

public static class ModelBuilderExtensions
{
    public static string DataPath { private get; set; } = "..\\..\\data";

    public static void Seed<TEntity>(this ModelBuilder modelBuilder) where TEntity : class, IBaseEntity
    {
        var entities = GetSeedRows<TEntity>();
        modelBuilder.Entity<TEntity>().HasData(entities);
    }

    private static TEntity[] …
Run Code Online (Sandbox Code Playgroud)

c# seeding entity-framework-core

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

使用 HttpClient 和 Polly 发送并行请求,但每个主机只有一个,以优雅地处理 429 响应

介绍:

我正在构建一个单节点网络爬虫来简单地验证200 OK.NET Core 控制台应用程序中的URL 。我在不同的主机上有一组 URL,我用HttpClient. 我对使用 Polly 和 TPL Dataflow 还很陌生。

要求:

  1. 我想支持与可配置的MaxDegreeOfParallelism.
  2. 我想将任何给定主机的并行请求数限制为 1(或可配置)。这是为了429 TooManyRequests使用 Polly 策略优雅地处理每个主机的响应。或者,我可以使用断路器在收到一个429响应时取消对同一主机的并发请求,然后一次一个地处理该特定主机?
  3. 我完全没有使用 TPL 数据流,而是使用 Polly Bulkhead 或其他一些机制来限制并行请求,但我不确定为了实现需求 #2 的配置会是什么样子。

当前实施:

我当前的实现是有效的,除了我经常看到x对同一主机的并行请求429大约在同一时间返回......然后,他们都暂停重试策略......然后,他们都猛烈抨击同一台主机再次同时经常仍然收到429s。即使我在整个队列中均匀分布同一主机的多个实例,我的 URL 集合也会因一些429最终仍开始生成s 的特定主机而超重。

收到 a 后429,我想我只想向该主机发送一个并发请求,以尊重远程主机并追求200s。

验证器方法:

public async Task<int> GetValidCount(IEnumerable<Uri> urls, CancellationToken cancellationToken)
{
    var validator = new TransformBlock<Uri, bool>(
        async u => (await _httpClient.GetAsync(u, HttpCompletionOption.ResponseHeadersRead, cancellationToken)).IsSuccessStatusCode, …
Run Code Online (Sandbox Code Playgroud)

c# web-crawler tpl-dataflow .net-core polly

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

将命令行参数传递给 Visual Studio 容器工具中 .NET Core 控制台应用程序的 Docker 调试运行

在 Visual Studio 2019 中,我可以使用类似于以下配置的命令行参数调试 .NET Core 控制台应用程序launchSettings.json

{
  "profiles": {
    "MyConsoleApp": {
      "commandName": "Project",
      "commandLineArgs": "-a -v"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用 Docker 容器内的 Visual Studio 容器工具对此进行调试。我添加了另一个构建配置文件,launchSettings.json如下所示:

{
  "profiles": {
    "Docker": {
      "commandName": "Docker",
      "commandLineArgs": "-a -v"
    },
    "MyConsoleApp": {
      "commandName": "Project",
      "commandLineArgs": "-a -v"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这成功地按照定义构建并运行控制台应用程序Dockerfile,但是该docker run命令不包括commandLineArgs在 的Docker配置文件中指定的值launchSettings.json

生成的docker run命令(特别是没有-a -v):

docker run -dt -v "C:\Users\MyUser\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\Users\MyUser\source\repos\MyConsoleApp\src\MyConsoleApp:/app" -v …
Run Code Online (Sandbox Code Playgroud)

c# command-line-arguments visual-studio docker .net-core

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