EF Core to Mysql table binding












0















I have the following table in MySQL
enter image description here



When I run the following code in some middleware



var apiKeys = _appContext.apikey.ToList();


I get this error




System.InvalidOperationException: No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.




This is my ApiKey class



public class ApiKey
{
public string apikeyid { get; set; }
public string uid { get; set; }
public string apikey { get; set; }
public bool isactive { get; set;}
public bool ispaid { get; set; }
public bool ismod { get; set; }
public bool isadmin { get; set; }
}


I had this working with a Postgresql db and just moved over to MySQL. Does this have something to do with going from tinyint (in the db) to bool (in the class)?



I'm using MySql.Data.EntityFrameworkCore 8.0.13










share|improve this question























  • Yes it does - you are using bool but the schema is defined as a mysql tinyint

    – JohnB
    Nov 26 '18 at 1:54













  • I believe using an int in your model will fix this

    – JohnB
    Nov 26 '18 at 1:56






  • 1





    This sounds like a reported bug in MySql.Data.EntityFrameworkCore: bugs.mysql.com/bug.php?id=92987 You could try switching to nuget.org/packages/Pomelo.EntityFrameworkCore.MySql which is reportedly a lot less buggy.

    – Bradley Grainger
    Nov 26 '18 at 5:08






  • 2





    Mapping TINYINT(1) (aka BOOL) to bool in C# is a typical practice with MySQL & .NET and Pomelo fully supports it AFAIK.

    – Bradley Grainger
    Nov 26 '18 at 5:10











  • I'm getting this issue too. It's obviously a bug in the MySql.Data.EntityFrameworkCore library - it maps database bool types to Int16 types in .NET.

    – tuseau
    Nov 26 '18 at 13:12
















0















I have the following table in MySQL
enter image description here



When I run the following code in some middleware



var apiKeys = _appContext.apikey.ToList();


I get this error




System.InvalidOperationException: No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.




This is my ApiKey class



public class ApiKey
{
public string apikeyid { get; set; }
public string uid { get; set; }
public string apikey { get; set; }
public bool isactive { get; set;}
public bool ispaid { get; set; }
public bool ismod { get; set; }
public bool isadmin { get; set; }
}


I had this working with a Postgresql db and just moved over to MySQL. Does this have something to do with going from tinyint (in the db) to bool (in the class)?



I'm using MySql.Data.EntityFrameworkCore 8.0.13










share|improve this question























  • Yes it does - you are using bool but the schema is defined as a mysql tinyint

    – JohnB
    Nov 26 '18 at 1:54













  • I believe using an int in your model will fix this

    – JohnB
    Nov 26 '18 at 1:56






  • 1





    This sounds like a reported bug in MySql.Data.EntityFrameworkCore: bugs.mysql.com/bug.php?id=92987 You could try switching to nuget.org/packages/Pomelo.EntityFrameworkCore.MySql which is reportedly a lot less buggy.

    – Bradley Grainger
    Nov 26 '18 at 5:08






  • 2





    Mapping TINYINT(1) (aka BOOL) to bool in C# is a typical practice with MySQL & .NET and Pomelo fully supports it AFAIK.

    – Bradley Grainger
    Nov 26 '18 at 5:10











  • I'm getting this issue too. It's obviously a bug in the MySql.Data.EntityFrameworkCore library - it maps database bool types to Int16 types in .NET.

    – tuseau
    Nov 26 '18 at 13:12














0












0








0








I have the following table in MySQL
enter image description here



When I run the following code in some middleware



var apiKeys = _appContext.apikey.ToList();


I get this error




System.InvalidOperationException: No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.




This is my ApiKey class



public class ApiKey
{
public string apikeyid { get; set; }
public string uid { get; set; }
public string apikey { get; set; }
public bool isactive { get; set;}
public bool ispaid { get; set; }
public bool ismod { get; set; }
public bool isadmin { get; set; }
}


I had this working with a Postgresql db and just moved over to MySQL. Does this have something to do with going from tinyint (in the db) to bool (in the class)?



I'm using MySql.Data.EntityFrameworkCore 8.0.13










share|improve this question














I have the following table in MySQL
enter image description here



When I run the following code in some middleware



var apiKeys = _appContext.apikey.ToList();


I get this error




System.InvalidOperationException: No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.




This is my ApiKey class



public class ApiKey
{
public string apikeyid { get; set; }
public string uid { get; set; }
public string apikey { get; set; }
public bool isactive { get; set;}
public bool ispaid { get; set; }
public bool ismod { get; set; }
public bool isadmin { get; set; }
}


I had this working with a Postgresql db and just moved over to MySQL. Does this have something to do with going from tinyint (in the db) to bool (in the class)?



I'm using MySql.Data.EntityFrameworkCore 8.0.13







c# mysql .net-core ef-core-2.1






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 26 '18 at 1:33









JrowJrow

16211




16211













  • Yes it does - you are using bool but the schema is defined as a mysql tinyint

    – JohnB
    Nov 26 '18 at 1:54













  • I believe using an int in your model will fix this

    – JohnB
    Nov 26 '18 at 1:56






  • 1





    This sounds like a reported bug in MySql.Data.EntityFrameworkCore: bugs.mysql.com/bug.php?id=92987 You could try switching to nuget.org/packages/Pomelo.EntityFrameworkCore.MySql which is reportedly a lot less buggy.

    – Bradley Grainger
    Nov 26 '18 at 5:08






  • 2





    Mapping TINYINT(1) (aka BOOL) to bool in C# is a typical practice with MySQL & .NET and Pomelo fully supports it AFAIK.

    – Bradley Grainger
    Nov 26 '18 at 5:10











  • I'm getting this issue too. It's obviously a bug in the MySql.Data.EntityFrameworkCore library - it maps database bool types to Int16 types in .NET.

    – tuseau
    Nov 26 '18 at 13:12



















  • Yes it does - you are using bool but the schema is defined as a mysql tinyint

    – JohnB
    Nov 26 '18 at 1:54













  • I believe using an int in your model will fix this

    – JohnB
    Nov 26 '18 at 1:56






  • 1





    This sounds like a reported bug in MySql.Data.EntityFrameworkCore: bugs.mysql.com/bug.php?id=92987 You could try switching to nuget.org/packages/Pomelo.EntityFrameworkCore.MySql which is reportedly a lot less buggy.

    – Bradley Grainger
    Nov 26 '18 at 5:08






  • 2





    Mapping TINYINT(1) (aka BOOL) to bool in C# is a typical practice with MySQL & .NET and Pomelo fully supports it AFAIK.

    – Bradley Grainger
    Nov 26 '18 at 5:10











  • I'm getting this issue too. It's obviously a bug in the MySql.Data.EntityFrameworkCore library - it maps database bool types to Int16 types in .NET.

    – tuseau
    Nov 26 '18 at 13:12

















Yes it does - you are using bool but the schema is defined as a mysql tinyint

– JohnB
Nov 26 '18 at 1:54







Yes it does - you are using bool but the schema is defined as a mysql tinyint

– JohnB
Nov 26 '18 at 1:54















I believe using an int in your model will fix this

– JohnB
Nov 26 '18 at 1:56





I believe using an int in your model will fix this

– JohnB
Nov 26 '18 at 1:56




1




1





This sounds like a reported bug in MySql.Data.EntityFrameworkCore: bugs.mysql.com/bug.php?id=92987 You could try switching to nuget.org/packages/Pomelo.EntityFrameworkCore.MySql which is reportedly a lot less buggy.

– Bradley Grainger
Nov 26 '18 at 5:08





This sounds like a reported bug in MySql.Data.EntityFrameworkCore: bugs.mysql.com/bug.php?id=92987 You could try switching to nuget.org/packages/Pomelo.EntityFrameworkCore.MySql which is reportedly a lot less buggy.

– Bradley Grainger
Nov 26 '18 at 5:08




2




2





Mapping TINYINT(1) (aka BOOL) to bool in C# is a typical practice with MySQL & .NET and Pomelo fully supports it AFAIK.

– Bradley Grainger
Nov 26 '18 at 5:10





Mapping TINYINT(1) (aka BOOL) to bool in C# is a typical practice with MySQL & .NET and Pomelo fully supports it AFAIK.

– Bradley Grainger
Nov 26 '18 at 5:10













I'm getting this issue too. It's obviously a bug in the MySql.Data.EntityFrameworkCore library - it maps database bool types to Int16 types in .NET.

– tuseau
Nov 26 '18 at 13:12





I'm getting this issue too. It's obviously a bug in the MySql.Data.EntityFrameworkCore library - it maps database bool types to Int16 types in .NET.

– tuseau
Nov 26 '18 at 13:12












1 Answer
1






active

oldest

votes


















1














2 possible options as answered in comments already.





  • Pomelo driver supports bool to int mapping,


  • Second option would be using value converters, which works with the other driver.



    entity.Property(p => p.isActive).HasConversion< int >();








share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53473726%2fef-core-to-mysql-table-binding%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    2 possible options as answered in comments already.





    • Pomelo driver supports bool to int mapping,


    • Second option would be using value converters, which works with the other driver.



      entity.Property(p => p.isActive).HasConversion< int >();








    share|improve this answer




























      1














      2 possible options as answered in comments already.





      • Pomelo driver supports bool to int mapping,


      • Second option would be using value converters, which works with the other driver.



        entity.Property(p => p.isActive).HasConversion< int >();








      share|improve this answer


























        1












        1








        1







        2 possible options as answered in comments already.





        • Pomelo driver supports bool to int mapping,


        • Second option would be using value converters, which works with the other driver.



          entity.Property(p => p.isActive).HasConversion< int >();








        share|improve this answer













        2 possible options as answered in comments already.





        • Pomelo driver supports bool to int mapping,


        • Second option would be using value converters, which works with the other driver.



          entity.Property(p => p.isActive).HasConversion< int >();









        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 29 '18 at 10:49









        Tim CadenbachTim Cadenbach

        515




        515






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53473726%2fef-core-to-mysql-table-binding%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

            Calculate evaluation metrics using cross_val_predict sklearn

            Insert data from modal to MySQL (multiple modal on website)