У меня есть десятичное свойство в сущности 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 Сообщение = Произошла ошибка при обновлении записей. Смотрите внутреннее исключение для деталей. Source = EntityFramework StackTrace: в System.Data.Entity.Internal.InternalContext.SaveChanges () в System.Data.Entity.Internal.LazyInternalContext.SaveChanges () в System.Data.Entity.DbContext.SaveChanges () в ConsoleApp11.Pro. Main (String [] args) в C: \ Users \ dilshodk \ source \ repos \ ConsoleApp11 \ ConsoleApp11 \ Program.cs: строка 22 * 1013 *
Внутреннее исключение 1: UpdateException: при обновлении записей произошла ошибка , Подробности см. Во внутреннем исключении.
Внутреннее исключение 2: OverflowException: Преобразование переполняется.
Когда я пытаюсь вставить значение из запроса SQL, оно работает:
Insert into Products values (NEWID(),9999999999999999999)
Почему он не работает с EF и как я могу это решить?