Convert from to string in database to boolean property Entity Framework 4.1

你离开我真会死。 提交于 2019-11-30 06:01:29

问题


i am working on a legacy oracle database that uses character literals T and F in the database for its boolean values however i would like the Entity property to reflect a proper boolen value is there a wy to convert this value when the model is binding it is a read only database so inserts are not important


回答1:


I would suggest wrapping up or extending the generating type to add this sort of functionality ...

entity framework will generate objects that basically match what the data in the database tables looks like so if you have a table called "Contacts" you'll get an object called "Contacts", I think (although i could be wrong) the classes are defined as partial so it generates something like ...

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

you then add a new property like this ...

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

Now when you declare a Contact instance just fish the value from "MyBool" instead.

...

That's extending, wrapping up would be something like this ...

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

similar thing ... just need to consume the object slightly differently :)




回答2:


It's not possible. You will have to map a string property to the database table column and then use a not mapped boolean property:

public string MyStringProperty { get; set; }

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


来源:https://stackoverflow.com/questions/6708996/convert-from-to-string-in-database-to-boolean-property-entity-framework-4-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!