В настоящее время я успешно записываю в таблицу, но использую
Код: Выделить всё
_dbContext.Database.ExecuteSqlRawAsync()
Код: Выделить всё
_dbContext.Add(x);
Код: Выделить всё
await _dbContext.SaveChangesAsync();
Для ясности: моя служба зарегистрирована в пределах:
Код: Выделить всё
builder.Services.AddDbContext(options => options.UseSqlServer(arcadiaConnectionString));
builder.Services.AddScoped();
Код: Выделить всё
public class ArcadiaContext : DbContext
{
public ArcadiaContext() { }
public ArcadiaContext(DbContextOptions options) : base(options)
{
Console.WriteLine("Registered Entity Types:");
foreach (var entityType in Model.GetEntityTypes())
{
Console.WriteLine($"- {entityType.ClrType.Name}");
}
}
public DbSet? Item { get; set; }
public DbSet? DrugFormat { get; set; }
public DbSet
? Pack { get; set; }
public DbSet? PackType { get; set; }
public DbSet HistoricalExcelData { get; set; }
public DbSet Gc_ReferenceDrugs { get; set; }
public DbSet ArcadiaLoggings { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasKey(g => new { g.BNF_Drug_ID, g.DmdId, g.VmppId });
}
}
происходит сбой.
Код: Выделить всё
public async Task RemoveDrug(int drugId, long dmdId, string gcukCode, long VmppId)
{
var drugToRemove = _dbContext.Gc_ReferenceDrugs
.Where(x => x.BNF_Drug_ID == drugId && x.DmdId == dmdId.ToString() && x.VmppId == VmppId.ToString())
.FirstOrDefault();
if (drugToRemove != null)
{
await _dbContext.Database.ExecuteSqlRawAsync(
"DELETE FROM Gc_ReferenceDrugs WHERE BNF_Drug_ID = {0} AND DmdId = {1} AND VmppId = {2}",
drugId, dmdId, VmppId);
ArcadiaLogging logObject = new ArcadiaLogging(DateTime.Now, "Remove Drug", _environment, null, $"{gcukCode}-{drugId}-{dmdId}-{VmppId}", null);
await LogAction(logObject);
return 1;
}
else
{
return 0;
}
}
private async Task LogAction(ArcadiaLogging log)
{
try
{
var authState = await _authenticationStateProvider.GetAuthenticationStateAsync();
log.User = authState.User.Identity?.Name ?? "Unknown User";
_dbContext.Add(log);
await _dbContext.SaveChangesAsync();
}
catch (Exception ex)
{
Console.WriteLine($"Error in LogAction: {ex.Message}");
Console.WriteLine(ex.StackTrace);
throw;
}
}
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Необработанное исключение в схеме «5oJXt_WWhtJwsWMXhidjCf8cJLSfm_fntT7xHrYtNAk».
System.InvalidOperationException: тип объекта «ArcadiaLogging» не найден. Убедитесь, что тип сущности добавлен в модель.
И наконец, класс модели выглядит следующим образом:
Код: Выделить всё
public class ArcadiaLogging
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string? User { get; set; }
public DateTime? DtTm { get; set; }
public string? Action { get; set; }
public string? IsLive { get; set; }
public string? DrugAdded { get; set; }
public string? DrugRemoved { get; set; }
public string? Download { get; set; }
public ArcadiaLogging() { }
public ArcadiaLogging(DateTime? dtTm, string? action, string? isLive, string? drugAdded, string? drugRemoved, string? download)
{
DtTm = dtTm;
Action = action;
IsLive = isLive;
DrugAdded = drugAdded;
DrugRemoved = drugRemoved;
Download = download;
}
}
Я просто не могу понять, в чем дело. Либо я упускаю что-то глупое, либо способ работы серверных приложений Blazor вызывает некоторые проблемы. Интересно узнать, сталкивались ли другие с этой проблемой вообще.
Подробнее здесь: https://stackoverflow.com/questions/793 ... tity-weird
Мобильная версия