首页 新闻 会员 周边 捐助

EF CodeFirst - 映射不同类型字段

0
[已关闭问题] 关闭于 2017-12-05 11:55

二次开发项目,数据库已经存在,后上的EF CodeFirst。

表中所有删除标识(IeDelete)均为int类型,我想在实体中映射为Bool类型,请教博友该如何操作?

---

补充:因为历史问题不能将int改为bit类型,否则原来程序会报错。

EF
haoyk的主页 haoyk | 菜鸟二级 | 园豆:218
提问于:2017-11-30 10:41
< >
分享
所有回答(3)
0

数据库里是int类型,在实体中映射为Bool类型?

最佳解决方案 | 园豆:25 (初学一级) | 2017-11-30 10:46

支持(0) 反对(0) haoyk | 园豆:218 (菜鸟二级) | 2017-11-30 11:32
0

那要是数据库里存一个3.怎么办

吴瑞祥 | 园豆:29449 (高人七级) | 2017-11-30 10:47

这个不会,我查过数据。只有 0 1

支持(0) 反对(0) haoyk | 园豆:218 (菜鸟二级) | 2017-11-30 11:41

@haoyk: 你没法保证.明白吗.你既然保证只有0 1了.那就去把数据库类型转成bit

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-11-30 11:50

@吴瑞祥: 由于原来的数据库结构我不能改,但是我能保证数据里只有0 1。

现在讨论的不是合不合理的问题,而是找解决方案。

支持(0) 反对(0) haoyk | 园豆:218 (菜鸟二级) | 2017-11-30 13:07
0

int类型的范围多大,你告诉我们:1234567890这个int,映射为 bool ,结果是true呢还是false?

这个问题解决了,问题就好办了。

西漠以西 | 园豆:1675 (小虾三级) | 2017-11-30 11:11

数据库里只有0 和1 两个数据。

支持(0) 反对(0) haoyk | 园豆:218 (菜鸟二级) | 2017-11-30 11:42

@haoyk: 

试试[Column]配置在实体的私有的int字段上,然后创建bool类型的公共属性,在get 、set里面处理转换的逻辑

[Column("数据库里的整型字段")]

private int _isDeleted;

public bool IsDeleted{

     get {return _isDeleted == 0 ;}

     set{ _isDeleted = value ? 1 : 0 ;}

}

 

我瞎猜的,不知道行不行。

支持(0) 反对(0) 西漠以西 | 园豆:1675 (小虾三级) | 2017-11-30 11:51

@西漠以西: 我昨天也试过类似的方案,没有成功。

支持(0) 反对(0) haoyk | 园豆:218 (菜鸟二级) | 2017-11-30 13:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册