У меня есть десятичное свойство в объекте Product:
public class Product
{
public Guid Id { get; set; }
public decimal Price { get; set; }
}
Я хочу настроить точность отображения модели:
class Context : DbContext
{
public DbSet<Product> Products { get; set; }
public Context() : base("server=localhost;database=myDb2;trusted_connection=true;")
{
/* Database.Delete();
Database.Create(); */
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().HasKey(e => new { e.Id });
modelBuilder.Entity<Product>().Property(s => s.Price).HasPrecision(29, 10);
}
}
Теперь я пытаюсь сохранить десятичное число, имеющее 19 длин:
using (Context context = new Context())
{
var product = new Product();
product.Id = Guid.NewGuid();
product.Price = 9999999999999999999M;
context.Products.Add(product);
context.SaveChanges();
}
Выбрасывает исключение:
System.Data.Entity.Infrastructure.DbUpdateException HResult=0x80131501 Message=Произошла ошибка при обновлении записей. Подробности смотрите во внутреннем исключении. Source=EntityFramework StackTrace: в System.Data.Entity.Internal.InternalContext.SaveChanges() в System.Data.Entity.Internal.LazyInternalContext.SaveChanges() в System.Data.Entity.DbContext.SaveChanges() в ConsoleApp11.Program. Main(String[] args) в C:\Users\dilshodk\source\repos\ConsoleApp11\ConsoleApp11\Program.cs:строка 22
Внутреннее исключение 1: UpdateException: произошла ошибка при обновлении записей. Подробности смотрите во внутреннем исключении.
Внутреннее исключение 2: OverflowException: преобразование переполняется.
Когда я пытаюсь вставить значение из SQL-запроса, он работает:
Insert into Products values (NEWID(),9999999999999999999)
Почему это не работает из EF и как я могу это решить?