我的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 …
我在 Mac 上安装了 VS Code,并尝试将其连接到 git。但是 VS Code 表明它找不到 git。
我已经尝试将变量 git.path 修改为“/usr/bin”(我可以看到安装了 git)。但是,当启动 VS Code 时,它仍然表示 git 不存在。
我正在开发一个应用程序,我通过Code First方法使用.Net Core 2,EF Core和MySQL作为数据库服务器.
我有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) 我一直在使用类似于示例 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) 将 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
我想创建将包含以下扩展方法的 .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) 更新 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) 介绍:
我正在构建一个单节点网络爬虫来简单地验证200 OK.NET Core 控制台应用程序中的URL 。我在不同的主机上有一组 URL,我用HttpClient. 我对使用 Polly 和 TPL Dataflow 还很陌生。
要求:
MaxDegreeOfParallelism.429 TooManyRequests使用 Polly 策略优雅地处理每个主机的响应。或者,我可以使用断路器在收到一个429响应时取消对同一主机的并发请求,然后一次一个地处理该特定主机?当前实施:
我当前的实现是有效的,除了我经常看到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) 在 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# ×6
.net-core ×4
asp.net-core ×4
.net ×2
angular ×1
asp.net ×1
async-await ×1
automapper ×1
docker ×1
git ×1
macos ×1
mysql ×1
polly ×1
resharper ×1
seeding ×1
tpl-dataflow ×1
typescript ×1
web-crawler ×1
webforms ×1