【问题标题】:How to make MySql and EF Core to map tinyint or bit to boolean?如何使 MySql 和 EF Core 将 tinyint 或 bit 映射为布尔值?
【发布时间】:2020-04-21 22:52:26
【问题描述】:

我有一个 .NET Core 项目,我在其中使用 EF Core 搭建 MySql 数据库(db first 方法)。我无法让 EF Core 将 tinyint 或 bit 映射为 bool。它将 tinyint 映射到 byte 并将 bit 映射到 short。有人有什么想法吗?

【问题讨论】:

  • 你能告诉我们你的代码吗

标签: c# mysql .net-core entity-framework-core


【解决方案1】:

确保您使用 Pomelo.EntityFrameworkCore.MySql 作为您的 MySQL EF Core 提供程序。 (已经支持EF Core 3.0,比Oracle的包更可靠。)

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

【讨论】:

    【解决方案2】:

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

    假设你有一个像下面这样的类调用状态

    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
               };
              }
            }
        }
    
    • 您需要将元类放在同一个命名空间中

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 2011-12-23
      • 2012-01-30
      • 2011-04-30
      • 2020-12-10
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多