Код: Выделить всё
fail: Microsoft.EntityFrameworkCore.Update[10000]
An exception occurred in the database while saving changes for context type 'App_Escaner.Data.DatabaseContext'.
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details.
---> Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name 'Saadis_Internet..COMPROB'.
Я попробовал запустить SQL-запрос напрямую со строкой подключения, чтобы проверить, работает ли он, и он сделал вот так:
Код: Выделить всё
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var command = new SqlCommand("SELECT TOP 10 * FROM COMPROB", connection);
var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
}
}
Я попробовал продублировать проект, а в дублированном переопределить все модели и контекст с помощью команды scaffold со строкой подключения (той самой, которую я тестировал непосредственно перед этим)
И ничего не получилось, у меня всё равно получить эту ошибку. Базы данных Saadis_internet больше нет на моем экземпляре SQL Server, у меня есть только база данных Saadis.
Вот код действия, которое я тестирую:
Код: Выделить всё
[HttpPost]
public async Task DeleteCbtFromHr(string cbt, string hr)
{
if (string.IsNullOrEmpty(cbt)) return BadRequest("Comprobante no valido.");
var fCbt = new GetFormattedCbt().FormatCbt(cbt);
try
{
var comp = await context.Comprobs
.Where(x =>
x.CbtNrocbt == fCbt["nroCbt"] &&
x.CbtCenemi == fCbt["centEmi"] &&
x.CbtLetcbt == fCbt["letra"] &&
x.CbtNrohru == hr
)
.FirstOrDefaultAsync();
if (comp == null) return BadRequest("El comprobante no existe.");
// Actualizar nrohru, fleter, fleuni y estado del cbt
comp.CbtEstado = "1";
comp.CbtNrohru = "";
comp.CbtFleter = "";
comp.CbtFleuni = "";
// Buscar registro de cbt en COSTCBT
var costcbt = await context.Costcbt
.Where(x =>
x.Cliente == comp.CbtNrocli &&
x.CbtCodcbt == comp.CbtCodcbt &&
x.CbtCenemi == comp.CbtCenemi &&
x.CbtNrocbt == comp.CbtNrocbt &&
x.CbtLetcbt == comp.CbtLetcbt)
.FirstOrDefaultAsync();
// actualizar importe, impcrr, kilos_afo, bultos, val_decla, hranulada, enviado, plrema
if (costcbt != null)
{
costcbt.Importe = 0;
costcbt.CosImpcrr = 0;
costcbt.KilosAfo = 0;
costcbt.Bultos = 0;
costcbt.ValDecla = 0;
costcbt.Hranulada = "A";
costcbt.Plrema = 0;
}
// guardar cambios
await context.SaveChangesAsync(); --> HERE IS WHERE THE ERROR TRIGGERS
// Ejecutar store para generar etapa
await context.Database.ExecuteSqlRawAsync("EXEC [dbo].[spBorrarComprobHR] @CBT_CENEMI, @CBT_NROCBT, @CBT_LETCBT, @CBT_NROCLI, @CBT_CODCBT, @CBT_NROHRU, @OP",
new SqlParameter("@CBT_CENEMI", comp.CbtCenemi),
new SqlParameter("@CBT_NROCBT", comp.CbtNrocbt),
new SqlParameter("@CBT_LETCBT", comp.CbtLetcbt),
new SqlParameter("@CBT_NROCLI", comp.CbtNrocli),
new SqlParameter("@CBT_CODCBT", comp.CbtCodcbt),
new SqlParameter("@CBT_NROHRU", comp.CbtNrohru),
new SqlParameter("@OP", HttpContext.Session.GetString("Operador"))
);
// devolver vista
return PartialView("_CbtDeleteResult");
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
Код: Выделить всё
"default": "Server=localhost\\SQLDEV; Database=Saadis; Integrated Security=False;user=*;pwd=*; TrustServerCertificate=True;"Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/791 ... to-project
Мобильная версия