Pomelo.EntityFrameworkCore.MySql: An exception occurred while reading a database value. The expected type was 'System.Byte[]' but the actual value was of type 'System.DateTime'.

Prevents concurrent fields from being automatically cannot identified

namespace Sky.Model.Domain
{
    public class Category 
    {
        public Guid Id { get; set; }

    
        public Guid ParentId { get; set; }

   
        public string CategoryName { get; set; }

    
        public Int64 ChildCount { get; set; }


    
        public DateTime DateCreated { get; set; }


        public byte[] RowVersion { get; set; }


    }


namespace Sky.Core.Mapping
{
    public class CategoryMap
    {
        public static void Map(EntityTypeBuilder<Category> builder)
        {
            builder.ToTable("Category");
            builder.HasKey(o => o.Id);
            builder.Property(o => o.Id).IsRequired().HasMaxLength(36);
            builder.Property(o => o.ParentId).IsRequired().HasMaxLength(36).IsUnicode(false);
            builder.Property(o => o.CategoryName).HasMaxLength(64).IsRequired();
            builder.HasIndex(o => o.CategoryName);
            builder.Property(o => o.ChildCount).IsRequired();
            builder.Property(o => o.DateCreated).IsRequired();
          builder.Property(o => o.RowVersion).IsRequired().IsRowVersion().ValueGeneratedOnAddOrUpdate();
        }
    }
}
}

when a insert data。。。 1.InvalidOperationException: An exception occurred while reading a database value. The expected type was ‘System.Byte[]’ but the actual value was of type ‘System.DateTime’.

2.InvalidCastException: Unable to cast object of type ‘System.DateTime’ to type ‘System.Byte[]’.

 var category1 = new Category
                {
                    CategoryName = "News",
                    ChildCount = 0,
                    ParentId = Guid.Empty,
                    DateCreated = DateTime.UtcNow
                };
 _context.Categories.Add(category1);
  _context.SaveChanges();

logger :sql

2017-08-12 21:39:28.1219|Microsoft.EntityFrameworkCore.Database.Command|INFO|Executed DbCommand (21ms) [Parameters=[@p0='?', @p2='?' (Size = 64), @p4='?', @p6='?', @p8='?', @p12='?', @p14='?' (Size = 64), @p16='?', @p18='?', @p20='?', @p24='?', @p26='?' (Size = 64), @p28='?', @p30='?', @p32='?', @p36='?', @p38='?' (Size = 64), @p40='?', @p42='?', @p44='?', @p48='?', @p50='?' (Size = 64), @p52='?', @p54='?', @p56='?', @p60='?', @p62='?' (Size = 64), @p64='?', @p66='?', @p68='?', @p72='?', @p74='?' (Size = 64), @p76='?', @p78='?', @p80='?', @p84='?', @p86='?' (Size = 64), @p88='?', @p90='?', @p92='?', @p96='?', @p98='?' (Size = 64), @p100='?', @p102='?', @p104='?', @p108='?', @p110='?' (Size = 64), @p112='?', @p114='?', @p116='?', @p120='?', @p122='?' (Size = 64), @p124='?', @p126='?', @p128='?', @p132='?', @p134='?' (Size = 64), @p136='?', @p138='?', @p140='?', @p144='?', @p146='?' (Size = 64), @p148='?', @p150='?', @p152='?', @p156='?', @p158='?' (Size = 64), @p160='?', @p162='?', @p164='?', @p168='?', @p170='?' (Size = 64), @p172='?', @p174='?', @p176='?', @p180='?', @p182='?' (Size = 64), @p184='?', @p186='?', @p188='?', @p192='?', @p194='?' (Size = 64), @p196='?', @p198='?', @p200='?', @p204='?', @p206='?' (Size = 64), @p208='?', @p210='?', @p212='?', @p216='?', @p218='?' (Size = 64), @p220='?', @p222='?', @p224='?', @p228='?', @p230='?' (Size = 64), @p232='?', @p234='?', @p236='?', @p240='?', @p242='?' (Size = 64), @p244='?', @p246='?', @p248='?', @p252='?', @p254='?' (Size = 64), @p256='?', @p258='?', @p260='?', @p264='?', @p266='?' (Size = 64), @p268='?', @p270='?', @p272='?', @p276='?', @p278='?' (Size = 64), @p280='?', @p282='?', @p284='?', @p288='?', @p290='?' (Size = 64), @p292='?', @p294='?', @p296='?'], CommandType='Text', CommandTimeout='0']
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p0, @p2, @p4, @p6, @p8);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p0;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p12, @p14, @p16, @p18, @p20);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p12;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p24, @p26, @p28, @p30, @p32);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p24;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p36, @p38, @p40, @p42, @p44);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p36;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p48, @p50, @p52, @p54, @p56);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p48;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p60, @p62, @p64, @p66, @p68);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p60;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p72, @p74, @p76, @p78, @p80);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p72;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p84, @p86, @p88, @p90, @p92);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p84;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p96, @p98, @p100, @p102, @p104);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p96;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p108, @p110, @p112, @p114, @p116);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p108;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p120, @p122, @p124, @p126, @p128);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p120;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p132, @p134, @p136, @p138, @p140);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p132;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p144, @p146, @p148, @p150, @p152);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p144;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p156, @p158, @p160, @p162, @p164);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p156;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p168, @p170, @p172, @p174, @p176);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p168;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p180, @p182, @p184, @p186, @p188);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p180;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p192, @p194, @p196, @p198, @p200);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p192;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p204, @p206, @p208, @p210, @p212);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p204;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p216, @p218, @p220, @p222, @p224);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p216;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p228, @p230, @p232, @p234, @p236);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p228;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p240, @p242, @p244, @p246, @p248);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p240;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p252, @p254, @p256, @p258, @p260);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p252;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p264, @p266, @p268, @p270, @p272);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p264;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p276, @p278, @p280, @p282, @p284);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p276;
INSERT INTO `Category` (`Id`, `CategoryName`, `ChildCount`, `DateCreated`, `ParentId`)
VALUES (@p288, @p290, @p292, @p294, @p296);
SELECT `RowVersion` FROM `Category` WHERE `Id` = @p288; 
2017-08-12 21:39:28.3123|Microsoft.EntityFrameworkCore.Update|ERROR|An exception occurred in the database while saving changes for context type 'Sky.Core.SkyDbContext'.
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.InvalidOperationException: An exception occurred while reading a database value. The expected type was 'System.Byte[]' but the actual value was of type 'System.DateTime'. ---> System.InvalidCastException: Unable to cast object of type 'System.DateTime' to type 'System.Byte[]'.
   at Microsoft.EntityFrameworkCore.Storage.Internal.WrappedMySqlDataReader.ConvertWithReflection[T](Int32 ordinal, InvalidCastException e)
   at Microsoft.EntityFrameworkCore.Storage.Internal.WrappedMySqlDataReader.GetFieldValue[T](Int32 ordinal)
   at lambda_method(Closure , DbDataReader )
   --- End of inner exception stack trace ---
   at Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource.ThrowReadValueException[TValue](Exception exception, Object value, IPropertyBase property)
   at lambda_method(Closure , DbDataReader )
   at Microsoft.EntityFrameworkCore.Storage.Internal.TypedRelationalValueBufferFactory.Create(DbDataReader dataReader)
   at Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.ConsumeResultSetWithPropagation(Int32 commandIndex, DbDataReader reader)
   at Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.Consume(DbDataReader reader)
   --- End of inner exception stack trace ---
   at Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.Consume(DbDataReader reader)
   at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Update.Internal.MySqlBatchExecutor.Execute(IEnumerable`1 commandBatches, IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChanges(IReadOnlyList`1 entries)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IReadOnlyList`1 entriesToSave)
   at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess)
   at Microsoft.EntityFrameworkCore.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess) An error occurred while updating the entries. See the inner exception for details.

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 20 (6 by maintainers)

Most upvoted comments

@souchprod that’s because TreatTinyAsBoolean defaults to true in the MySQL Driver: https://mysql-net.github.io/MySqlConnector/connection-options/

Change your column to tinyint(3) or set TreatTinyAsBoolean=false in your connection string.