小编Mat*_*ler的帖子

Blazor Inputselect onchange 事件不起作用

在这里,我使用 blazor 服务器应用程序,并尝试使用事件根据国家/地区下拉列表中的更改填充城市下拉列表@onchange="countyClicked",并将下拉列表与模型绑定。

现在的问题是 onchange 事件不起作用,并且城市下拉列表不会填充到国家/地区下拉列表的 onchange 上。

下面是我的下拉列表组件 html

<InputSelect @bind-Value="PersonModel.CountryId" class="form-control" @onchange="countyClicked">
   <option value="">Select country</option>
   @foreach (var item in Countries)
   {
      <option value="@item.CountryId">@item.CountryName</option>
   }
</InputSelect>

<InputSelect class="form-control mb-2 mr-sm-2" @bind-Value="PersonModel.CityId">
   @foreach (var city in Cities)
   {
      <option value="@city.CityId">@city.CityName</option>
   }
</InputSelect>
<br><br>



public void countyClicked(ChangeEventArgs args)
{
   var getCountryId = args.Value.ToString();
   int.TryParse(getCountryId, out int countryId);
   Cities = mainService.GetAllCityByCountryId(countryId);
}
Run Code Online (Sandbox Code Playgroud)

c# entity-framework asp.net-core blazor blazor-server-side

5
推荐指数
2
解决办法
8456
查看次数

存储过程 .NET Core 和 Entity Framework 的多个返回集

我想从返回 3 个不同表的 SQL Server 存储过程加载 3 个不同的模型,例如:

 select A.id, A.Name from tableA A

 select B.id, B.Age from tableB B

 select C.Test, C.Param from tableC C
Run Code Online (Sandbox Code Playgroud)

通常,我会使用 Entity Framework Core 处理单个结果存储过程,如下所示:

语境:

 public virtual DbQuery<StoredProcedureModel> spModel{ get; set; }

 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
        modelBuilder.Query<StoredProcedureModel>(entity =>
        {
            entity.Property(e => e.Id)
                    .HasColumnName("Id");
            entity.Property(e => e.Name)
                    .HasColumnName("Name");
        }
 }
Run Code Online (Sandbox Code Playgroud)

存储库:

return _context.StoredProcedureModel
        .FromSql<StoredProcedureModel>(
            "GET_ID_NAME @ID,@NAME",
            new SqlParameter("@ID", ID),
            new SqlParameter("@NAME", Name))
        .ToList();
Run Code Online (Sandbox Code Playgroud)

这只是一个虚拟示例,但我想知道是否有一种方法可以将所有 3 个表加载到 3 个不同的模型中(某些返回的表具有相同的列名称,如“id”)。

sql-server rest stored-procedures entity-framework-core .net-core

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

Serilog WriteTo.Email() 失败

这是一个使用 Serilog.Sinks.Email 2.4.0 的 .Net Core 6 控制台应用程序。在同一个项目中,我引用了 MailKit 3.1.0 Nuget 包。我注意到 Serilog.Sinks.Email 还引用了 Mailkit 3.1.0。

我正在像这样配置记录器。我的目标是让 Serilog 在调用 Log.Fatal() 时发送电子邮件:

.WriteTo.Email(  
    new EmailConnectionInfo()
    {
        FromEmail = _appSettings.EmailFrom,
        ToEmail = _appSettings.EmailToOnError,
        MailServer = _appSettings.EmailHost,
        EmailSubject = $"Runtime error starting {_appSettings.ApplicationName}",
        ServerCertificateValidationCallback = (s, c, h, e) => true
    },
    restrictedToMinimumLevel: LogEventLevel.Fatal);
Run Code Online (Sandbox Code Playgroud)

我将 Serilog 消息记录到调试输出窗口,如下所示,这样我就可以看到 Serilog 本来(按设计)吞咽的错误消息:

Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
Run Code Online (Sandbox Code Playgroud)

当我调用 Log.Fatal(),然后立即调用 Log.CloseAndFlush(),并查看“调试输出”窗口时,我可以看到 Serilog 尝试向我发送电子邮件,但失败了,说它找不到 MailKit 方法.MailTransport.SendAsync()。知道我缺少什么吗?以下是调试输出窗口中的完整错误消息:

Exception while emitting periodic batch from 
Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink: System.MissingMethodException: 
Method not found: 'System.Threading.Tasks.Task 
MailKit.MailTransport.SendAsync(MimeKit.MimeMessage, System.Threading.CancellationToken, …
Run Code Online (Sandbox Code Playgroud)

c# serilog mailkit .net-core .net-6.0

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