将数据库中的字符串转换为布尔属性

本文关键字:布尔 属性 转换 字符串 数据库 | 更新日期: 2023-09-27 18:02:07

我正在处理一个遗留的oracle数据库,该数据库使用字符字面量T和F在数据库中的布尔值,但是我希望实体属性反映一个适当的布尔值是否有一种方法来转换这个值当模型绑定时,它是一个只读数据库,所以插入是不重要的

将数据库中的字符串转换为布尔属性

不可能。您必须将字符串属性映射到数据库表列,然后使用未映射的布尔属性:

public string MyStringProperty { get; set; }
[NotMapped]
public bool MyBoolProperty
{ 
    get { return MyStringProperty == "T"; }
    set { MyStringProperty = value ? "T" : "F"; }
}

我建议包装或扩展生成类型来添加这种功能…

实体框架将生成对象,基本上与数据库表中的数据相匹配,所以如果你有一个名为"Contacts"的表,你会得到一个名为"Contacts"的对象,我认为(尽管我可能是错的)类被定义为部分,所以它生成的东西像。

public partial class Contact { 
  string BoolReally { 
    get; set;
  };
}

然后添加像这样的新属性…

public partial class Contact { 
  bool MyBool get { 
    return (legacyValue == "T") ? true : false;
  }
}

现在,当你声明一个Contact实例时,只需从"MyBool"中获取值即可。

这是扩展,包装应该是这样的…

public class MyContact {
     public Contact Contact;
     public bool MyBool { 
         get { 
             return Contact.BoolAsString; 
         }
     }
}

类似的事情…只需要稍微不同地使用对象:)