Кажется, EF дополняет нули до значения, которое я пытаюсь сохранить, а затем выдает исключение. Вот мой код: почему поле общего количества часов со значением 10,17 выходит за пределы диапазона десятичного (6,5) типа значения и почему оно заполняет это значение нулями? Сохранение этого значения напрямую с помощью SQL Server Management Studio не является проблемой, поэтому это скорее похоже на проблему с EF.
Это файл базы данных .edmx. Я попытался установить масштаб и точность и установить на ноль. Ни один не работал
var rVal = new Data.FactPayrollHour()
{
BereavementHours = 0.0M,
CostCenter = "MyCostCenter",
Department = "MyDepartment",
EmergencyHours = 0.0M,
HomeGroupCode = "MyHomeGroup",
PayrollEmployeeId = employees.FirstOrDefault().Id,
PayType = "MyPayType",
PunchDateKey = dateDims.FirstOrDefault().ID,
Schedule = "",
ServiceHours = 0.0M,
Shift = "",
ShortTermHours = 0.0M,
TimePolicy = "",
TotalHours = 10.17M,
UnpaidHours = 0.0M,
VacationHours = 0.0M
};
db.FactPayrollHours.Add(rVal);
db.SaveChanges();
Сообщение об исключении: Parameter value '10.17000' is out of range.
Трассировка стека:
at System.Data.SqlClient.TdsParser.TdsExecuteRPC(SqlCommand cmd, _SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__c(DbCommand t, DbCommandInterceptionContext`1 c)
at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.Execute(Dictionary`2 identifierValues, List`1 generatedValues)
at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update()