gpt4 book ai didi

c# - 从 Char 映射到 Boolean

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:52 24 4
gpt4 key购买 nike

我们将 Dapper 用作遗留 Informix 数据库的 ORM,并且在此数据库中, bool 字段实际上存储为 Char,“F”表示 False,“T”表示 True。

在我们的 POCO 中,我们希望公开一个 bool 值属性,并指示 Dapper 在读取和写入数据库时​​映射到/从相关的 char 值。

例如:

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

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

public class MyTable
{
public bool Active { get; set; }
}

是否可以在 Dapper 中创建一个自定义映射,如果基础值为“T”,则此列会将 POCO 中的 Active 属性设置为 true,如果基础值为“F”,则设置为 false?

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

public class MyTable
{
public string Active { get; set; }
public bool MyActive
{
get { return Active == "T"; }
set { Active = (value == "T"); }
}
}

这种方法的缺点是必须维护两个属性,所以如果有一种方法可以扩展 dapper 让它为我做这件事,那就太好了(特别是因为表中有很多这样的字段我们的数据库)。

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

最佳答案

我怀疑 dapper 是否支持它,看看 this related question's answer .如您所见,Active - 属性甚至不必是公开的,将其设置为private 以避免混淆。但是,我会将您的 bool 属性命名为 IsActive

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

关于c# - 从 Char 映射到 Boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26157839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com