我正在处理一个使用字符字面量 T 和 F 作为布尔值的遗留 Oracle 数据库,但是我希望实体属性反映正确的布尔值。在模型绑定时是否有一种方法可以转换此值?由于这是只读数据库,因此插入操作并不重要。
我正在处理一个使用字符字面量 T 和 F 作为布尔值的遗留 Oracle 数据库,但是我希望实体属性反映正确的布尔值。在模型绑定时是否有一种方法可以转换此值?由于这是只读数据库,因此插入操作并不重要。
这是不可能的。您需要将一个字符串属性映射到数据库表列,然后使用一个未映射的布尔属性:
public string MyStringProperty { get; set; }
[NotMapped]
public bool MyBoolProperty
{
get { return MyStringProperty == "T"; }
set { MyStringProperty = value ? "T" : "F"; }
}
public partial class Contact {
string BoolReally {
get; set;
};
}
然后你可以像这样添加一个新属性...
public partial class Contact {
bool MyBool get {
return (legacyValue == "T") ? true : false;
}
}
public class MyContact {
public Contact Contact;
public bool MyBool {
get {
return Contact.BoolAsString;
}
}
}
类似的事情...只需要稍微不同的方式来使用这个对象 :)
MyBool
属性无法在LINQ查询中使用,因为EF无法将这样的查询翻译成SQL。 - Steven