如何在EF 4.1 Code First中进行属性类型转换

| 我想从现有的SQL数据库模式创建EF 4.1代码优先模型,我想知道是否可以对属性数据进行某种类型的转换。 例如,我有一个现有表\“ Foo \”,其字段如下:
isTrue char(1) \'valid values are \"Y\" or \"N\"
在我的EF 4.1 Code First模型中,我想将此字段转换为布尔类型,例如:
public class Foo
{
    public bool isTrue { get; set; }  
}
通过扩展DBContext或在模型或EntityTypeConfiguration <>子类中添加额外的代码,在EF 4.1 Code First中是否可行?如果是,有人可以将我指向链接或有关该文件的文档吗?目前无法重构数据库字段。     
已邀请:
        可以使用一个公共的非映射字段,该字段使用一个内部字段,然后可以先使用代码保存和检索,然后在此处进行映射。这需要为每个需要转换的字段完成,或者当然要使用辅助方法简化
internal string YesNo { get; set; }

private bool _bYesNo;
[NotMapped]
public bool bYesNo
{
  get{return (YesNo == \"Y\") ? true : false;}
  set{_bYesNo = value;YesNo = (bYesNo) ? \"Y\" : \"N\";}
}
    
        无法让EF进行转换。 一种可能的解决方法是使EF忽略bool属性,并使用包装器属性将
true
转换为
\"Y\"
,并将
false
转换为
\"N\"
。 如果您通常需要这种灵活性,建议您研究更成熟的框架。 例如,NHibernate通过指定“ 7”作为映射类型来立即支持此要求。     
        我遇到了同样的问题,以下解决方案对我来说非常有用! 实体框架和Oracle布尔 在我的代码中,表字段看起来像一个普通的布尔值,但在数据库中它是char(1):EF模型会将其转换为\“ Y \”或\“ N \”并将其保存到数据库中。 我也将Guid转换为char(36)。     

要回复问题请先登录注册