Open
Description
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 0x80040E07 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)