Skip to content

Can't save decimal value #32

Open
Open
@MarcinWerra

Description

@MarcinWerra

Is it possible to save a decimal value?

using EntityFrameworkCore.Jet;
using Microsoft.EntityFrameworkCore;
using System;
using System.Data.Jet;

namespace TestSaveDecimal
{
  public class Table
  {
    public int Id { get; set; }
    public decimal DecimalValue { get; set; }
  }

  public class Database : DbContext
  {
    public DbSet<Table> Table { get; set; }

    public Database() { }
    public static string File;

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
      if (optionsBuilder.IsConfigured)
        return;
      JetConfiguration.OleDbDefaultProvider = "Microsoft.Jet.OLEDB.4.0";
      optionsBuilder.UseJet($"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={File}; Persist Security Info=False;").EnableSensitiveDataLogging();
    }
  }

  class Program
  {
    static void Main(string[] args)
    {
      try
      {
        Database.File = "New-File.mdb";
        using (var db = new Database())
        {
          db.Database.EnsureCreated();

          var t = new Table();
          db.Table.Add(t);
          t.DecimalValue = 1.23M;
          db.SaveChanges();
        }
      }
      catch (Exception exception)
      {
        System.Console.WriteLine(exception.Message);
        if (exception.InnerException != null)
          System.Console.WriteLine(exception.InnerException.Message);
      }
    }
  }
}

There is an "Inappropriate data type in the criterion expression" with HResult 0x‭80040E07‬ from "Microsoft JET Database Engine".

   w System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   w System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   w System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   w System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   w System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   w System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
   w System.Data.OleDb.OleDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
   w System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   w System.Data.Jet.JetCommand.InternalExecuteDbDataReader(String commandText, CommandBehavior behavior)
   w System.Data.Jet.JetCommand.ExecuteDbDataReader(CommandBehavior behavior)
   w System.Data.Common.DbCommand.ExecuteReader()
   w Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
   w Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
   w Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions