Ошибка при работе с SQL Server
При попытке сохранить изменения в бд я получаю ошибку:
"SqlException: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 6 ("@p3"): The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision."
Помогите пожалуйста разобраться в чем может быть проблема.
Стэк ошибок:
System.Data.SqlClient.SqlException (0x80131904): The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 6 ("@p3"): The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader()
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)
ClientConnectionId:7e7dbe25-1919-4165-b933-b3be128bb001
Error Number:8023,State:1,Class:16
View:
@model Parameters
<div class="content">
<table cellpadding="0" cellspacing="0" width="100%">
<div class="block_content">
<form action="CalculationParameters" method="POST">
<table align="center" class="content_fields" border-spacing: 7px 11px;>
<tbody>
<tr>
<td>
<h3>Параметры</h3>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<label>Напряжение питания инвертора</label>
<div class="col-12">
<input asp-for="En" class="form-control" />
<span asp-validation-for="En" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<label>Внешняя нагрузка</label>
<div class="col-12">
<input asp-for="Cn" class="form-control" />
<span asp-validation-for="Cn" class="text-danger"></span>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<label>Высокий уровень входного напряжения</label>
<div class="col-12">
<input asp-for="Uvh1" class="form-control" />
<span asp-validation-for="Uvh1" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<label>Толщина диэлектрика</label>
<div class="col-12">
<input asp-for="hd" class="form-control" />
<span asp-validation-for="hd" class="text-danger"></span>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<label>Низкий уровень входного напряжения</label>
<div class="col-12">
<input asp-for="Uvh0" class="form-control" />
<span asp-validation-for="Uvh0" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<label>Время включения</label>
<div class="col-12">
<input asp-for="t" class="form-control" />
<span asp-validation-for="t" class="text-danger"></span>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<label>Высокий уровень выходного напряжения</label>
<div class="col-12">
<input asp-for="Uvyh1" class="form-control" />
<span asp-validation-for="Uvyh1" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<label>Диэлектрическая проницаемость диэлектрика</label>
<div class="col-12">
<input asp-for="Ed" class="form-control" />
<span asp-validation-for="Ed" class="text-danger"></span>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<label>Низкий уровень выходного напряжения</label>
<div class="col-12">
<input asp-for="Uvyh0" class="form-control" />
<span asp-validation-for="Uvyh0" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<label>Подвижность электронов</label>
<div class="col-12">
<input asp-for="u" class="form-control" />
<span asp-validation-for="u" class="text-danger"></span>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group">
<label>Пороговое напряжение</label>
<div class="col-12">
<input asp-for="U0" class="form-control" />
<span asp-validation-for="U0" class="text-danger"></span>
</div>
</div>
</td>
<td>
<input class="btn btn-success" type="submit" value="Рассчитать" onclick="return Calculation(@Model);" />
</td>
</tr>
</tbody>
</table>
<table align="center" class="content_fields" border-spacing: 7px 11px;>
<tbody>
<div id="calculation"></div>
</tbody>
</table>
</form>
</div>
</table>
</div>
Ajax запрос (Calculation.js):
function Calculation(parameters) {
$.get("/Calculation/CalculationSize", parameters);
}
Controller:
public class CalculationController: Controller
{
private readonly ICalculationParameters calculationParameters;
public CalculationController(ICalculationParameters calculationParameters)
{
this.calculationParameters = calculationParameters;
}
public IActionResult CalculationParameters()
{
return View();
}
[HttpPost]
public ActionResult CalculationParameters(Parameters pam)
{
return View(pam);
}
public ActionResult CalculationSize(Parameters pam)
{
CalculationOfParameters calPam = new CalculationOfParameters(pam);
calculationParameters.Calculation(calPam.parameters);
return RedirectToAction(nameof(CalculationParameters));
}
public ActionResult Calculation(Parameters pam)
{
Parameters parameters = calculationParameters.parameters.Last();
parameters.lk = pam.lk;
parameters.wn = pam.wn;
CalculationOfSize calPam = calPam = new CalculationOfSize(parameters);
return View(calPam.parameters);
}
}
Ошибка происходит при запуске метода CalculationSize в этой строке calculationParameters.Calculation(calPam.parameters); тут как раз и идет запись в бд, где я получаю ошибку при попытке сохранить изменения.
public class CalculationParametersRepository : ICalculationParameters
{
private readonly AppDBContent appDBContent;
public CalculationParametersRepository(AppDBContent appDBContent)
{
this.appDBContent = appDBContent;
}
public void Calculation(Parameters pam)
{
appDBContent.Parameters.Add(pam);
appDBContent.SaveChanges();
}
public IEnumerable<Parameters> parameters => appDBContent.Parameters;
}