我正在尝试将一个简单的 Web Api 应用程序部署到 Azure,以帮助我熟悉 Azure 服务和用于部署的 Github Actions。以下是我已采取的步骤
1 - 在 Visual Studio 中创建一个新的 .NET 7 Web Api 应用程序。这将创建一个样板 Weatherforecast API 应用程序,并通过 VS 在本地按预期运行。2- 创建一个新的 github 存储库并将我的 .sln 文件连同项目文件夹发布到该存储库
在蔚蓝中:
在我的主资源组中创建新的 Web 应用程序服务
在创建过程中链接到我的 github 帐户并选择我的项目文件夹和 .sln 文件所在的存储库和主分支。
现在,工作流文件已在存储库中创建,部署将启动,但几分钟后失败并出现错误:
构建解决方案时不支持“--output”选项。
如果工作流程文件如下,我看不到如何禁用此选项:
name: Build and deploy ASP.Net Core app to Azure Web App - muzztest
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Set up .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: '7.x' …Run Code Online (Sandbox Code Playgroud) 我希望在 EF Core 上运行原始 SQL 删除查询,并且我正在起诉以下指南来帮助我: https: //learn.microsoft.com/en-us/ef/ef6/querying/raw-sql
代码:
using (accountingContext db = new())
{
db.Database.ExecuteSqlCommand("DELETE FROM ...");
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
DatabaseFacade 不包含“ExecuteSqlCommand”的定义
我的accountingContext类:
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
namespace WebApi.Models
{
public partial class accountingContext : DbContext
{
public DbSet<User>? Users { get; set; }
public DbSet<Transaction>? Transactions { get; set; }
public DbSet<TransactionStaging>? TransactionsStaging { get; set; }
public accountingContext()
{
}
public accountingContext(DbContextOptions<accountingContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if …Run Code Online (Sandbox Code Playgroud) 我在 Angular 10 中的材质进度条上遇到了一个奇怪的问题。即使在设置之后,进度条仍显示为 100%,其值较小:
我的 component.html 中的代码非常简单:
<mat-progress-bar mode="determinate" value="40"></mat-progress-bar>
Run Code Online (Sandbox Code Playgroud)
渲染正常,但显示为 100%
我看不出我在这里可能做错了什么。
以下是我的组件文件的内容:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss']
})
export class TestComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
}
Run Code Online (Sandbox Code Playgroud)
在我的 app.module.ts 文件中,我导入 Material UI,如下所示:
import { MaterialModule } from './modules/material.module';
Run Code Online (Sandbox Code Playgroud)
./modules/material.module.ts的内容如下:
import { NgModule } from '@angular/core';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { MatInputModule } from '@angular/material/input'; …Run Code Online (Sandbox Code Playgroud) Index.razor.cs:
我正在开发一个网格组件,它将显示一个项目列表:
<Grid Items="Transactions">
<GridHeader>
<GridColumn TItem="Transaction">ID</GridColumn>
<GridColumn TItem="Transaction">Date</GridColumn>
</GridHeader>
</Grid>
Run Code Online (Sandbox Code Playgroud)
然后在 Grid.razor.cs 和 GridColumn.razor.cs 中我使用 typeparam TItem。但似乎我需要将 TITem 作为每个网格列中的参数传递,我该如何实现对类似以下内容的支持:
<Grid Items="Transactions" TItem="Transaction">
<GridHeader>
<GridColumn>ID</GridColumn>
<GridColumn>Date</GridColumn>
</GridHeader>
</Grid>
Run Code Online (Sandbox Code Playgroud)
因此,TItem 会级联到所有子组件(无论它们嵌套的深度如何)
我查看了 CascadingTypeParam 但有关它的信息很少,所以我不确定如果它是上述解决方案,如何使用它。
我正在创建一个自定义选择下拉组件,简化如下:
<script lang="ts">
let optionsOpen: boolean = false;
function onSelectClick(e) {
optionsOpen = !optionsOpen;
let p = e.target.closest('.select');
let child = p.querySelector('.options');
console.log(child); //always null
}
</script>
<div class="select" on:click={onSelectClick}>
{#if optionsOpen}
<div class="options">
My Options
</div>
{/if}
</div>
Run Code Online (Sandbox Code Playgroud)
从上面您将看到,当单击带有 .select 类的 div 时,选项容器将打开(通过 optionsOpen 变量)。
但是,在 onSelectClick 中,我需要在打开选项 div DOM 元素后访问它。我可以访问选择 div,但不能访问子选项 div,它总是返回 null。
我怀疑这可能是因为当我尝试访问它时,选项元素尚不可用,即使我在尝试访问之前将 optionsOpen 变量设置为。
有什么想法如何在选项 div 可见后访问它吗?
我第一次开始在我的 C# 项目中使用服务和依赖注入。
我有以下接口和类:
public interface IUserService
{
...
}
public class UserService : IUserService
{
...
}
Run Code Online (Sandbox Code Playgroud)
到目前为止没有什么令人困惑的。
但随后我利用 DI,如下所示:
public class UsersController : ControllerBase
{
private IUserService _userService;
public UsersController(IUserService userService)
{
_userService = userService;
}
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作。然而,我很难理解编译器如何知道传递给 UsersController 构造函数的 userService 参数应该是 UserService 类的实例,因为参数的类型是 IUserService。更让我困惑的是,我可以像使用 _userService 一样使用 _userService ,就像它是 UserClass 的实例一样,尽管它再次被声明为 IUserService 。
它与我的 Program.cs 文件中的下面一行有什么关系吗?
services.AddScoped<IUserService, UserService>();
Run Code Online (Sandbox Code Playgroud)
我希望得到一个不太技术性的简单解释,因为我仍在熟悉该语言和 .NET 框架的一些非常基本的概念。