在这里,我使用 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) 我想从返回 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
这是一个使用 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) .net-core ×2
c# ×2
.net-6.0 ×1
asp.net-core ×1
blazor ×1
mailkit ×1
rest ×1
serilog ×1
sql-server ×1