C# 如何使MySql和EF核心将tinyint或bit映射为boolean?

C# 如何使MySql和EF核心将tinyint或bit映射为boolean?,c#,mysql,.net-core,entity-framework-core,C#,Mysql,.net Core,Entity Framework Core,我有一个.NETCore项目,我使用EFCore构建我们的MySql数据库(db优先方法)。我无法使EF Core映射tinyint或bit为bool。它将tinyint映射为字节,将bit映射为short。有人有什么想法吗?您可以为实体框架生成的部分类编写元类 假设您有一个类调用状态,如bellow public class Status{ public int Value{get;set;} } 您可以像下面那样为它编写元类 [ModelMetadataType(typeof(TblUs

我有一个.NETCore项目,我使用EFCore构建我们的MySql数据库(db优先方法)。我无法使EF Core映射tinyint或bit为bool。它将tinyint映射为字节,将bit映射为short。有人有什么想法吗?

您可以为实体框架生成的部分类编写元类

假设您有一个类调用状态,如bellow

public class Status{
public int Value{get;set;}
}
您可以像下面那样为它编写元类

 [ModelMetadataType(typeof(TblUserMetaData))]
        public partial class Status
        {
        }

        public class TblUserMetaData
        {
           public int Value{get;set;}
           public bool ValueBool{get{ 
            //gett Value variable by converting boolean
            };
         set{
             //set Value variable by converting int
           };
          }
        }
    }
  • 您需要将元类放置在同一名称空间中
确保您使用的是MySQL EF核心提供商。(它已经支持EF Core 3.0,并且比Oracle的软件包更可靠。)


从3.0开始,将
TINYINT(1)
映射到
System.Boolean
是默认设置(),只要您的连接字符串包含
treatinyasboolean=True
(如果未明确设置,这是默认设置)。

您能向我们展示您的代码吗