Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符映射到布尔值_C#_Dapper - Fatal编程技术网

C# 从字符映射到布尔值

C# 从字符映射到布尔值,c#,dapper,C#,Dapper,我们使用Dapper作为遗留Informix数据库的ORM,在该数据库中,布尔字段实际上存储为字符,“F”表示False,“T”表示True 在我们的POCO中,我们希望公开一个布尔属性,并指示Dapper在读写数据库时映射到相关的char值 例如: 假设我们在一个表中有一个名为Active的字段。数据库中活动列的值为T或F 我们的POCO可能看起来像这样: public class MyTable { public bool Active { get; set; } } 是否可以在D

我们使用Dapper作为遗留Informix数据库的ORM,在该数据库中,布尔字段实际上存储为字符,“F”表示False,“T”表示True

在我们的POCO中,我们希望公开一个布尔属性,并指示Dapper在读写数据库时映射到相关的char值

例如:

假设我们在一个表中有一个名为Active的字段。数据库中活动列的值为T或F

我们的POCO可能看起来像这样:

public class MyTable
{
    public bool Active { get; set; }
}
是否可以在Dapper中创建一个自定义映射,如果基础值为T,则此列将POCO中的活动属性设置为true,如果为F,则设置为false

我知道我可以解决这个问题的一种方法是拥有两个属性,一个是Dapper可以直接映射到的字符串,另一个是POCO消费者使用的布尔值。i、 e:

public class MyTable
{
    public string Active { get; set; }
    public bool MyActive 
    {
        get { return Active == "T"; }
        set { Active = (value == "T"); }
    }
}
这种方法的缺点是必须维护两个属性,因此,如果有一种方法可以扩展dapper,让它为我做到这一点,那将是一件非常好的事情,特别是因为在我们的数据库表中有很多这样的字段


我已经研究过如何实现自定义类型映射,但尽管这对自定义复杂类型有效,但我不确定在这种情况下,当我想从一种基本类型映射到另一种基本类型时,它将如何工作。

我怀疑dapper是否支持它,请看一看。正如您所看到的,活动属性甚至不必是公共的,将其设置为私有以避免混淆。但是,我会将您的bool属性命名为active


我怀疑衣冠楚楚的人会支持它,看看吧。正如您所看到的,活动属性甚至不必是公共的,将其设置为私有以避免混淆。但是,我会将您的bool属性命名为active

public class MyTable
{
    private string Active { get; set; }
    public bool IsActive 
    {
        get { return Active == "T"; }
        set { Active = value ? "T" : "F"; }
    }
}