加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 将实体框架与Oracle伪布尔值一起使用

发布时间:2021-01-17 09:27:42 所属栏目:百科 来源:网络整理
导读:我正在研究在我的组织中使用Entity Framework.我们使用Oracle DBMS,因此(好或坏)使用Oracle中常见的“伪布尔”模式,而不是有一个布尔列(在Oracle中不存在),你有一个带有一个检查的1字符列约束强制它为“Y”或“N”. 因此,如果我希望我的EF模型中的实体具有

我正在研究在我的组织中使用Entity Framework.我们使用Oracle DBMS,因此(好或坏)使用Oracle中常见的“伪布尔”模式,而不是有一个布尔列(在Oracle中不存在),你有一个带有一个检查的1字符列约束强制它为“Y”或“N”.

因此,如果我希望我的EF模型中的实体具有布尔属性,如何将其映射到数据库列,其中“Y”表示true,“N”表示false?是否存在“转换器”的概念或实体框架中的某些内容可以为我执行此操作?

只是因为它可能会出现,我知道EF只能与SQL Server一起使用.我将使用DevArt dotConnect for Oracle将EF与Oracle结合使用.
http://www.devart.com/dotconnect/oracle/

编辑
那么像NHibernate这样的其他ORM框架呢?他们是否“开箱即用”处理这种情况?

解决方法

Devart dotConnect for Oracle具有NUMBER(1)列到System.Boolean的自动映射,它简化了这些列的工作 – 0对应于false,非零(默认为1) – 为true.无需其他操作. 如果您希望在char表单中保留布尔值,则必须选择以下方法之一: 1.保留映射到字符列的属性的字符串类型. 将一个boolean类型的附加包装属性添加到部分实体类,并相应地在getter和setter中将字符串值转换为boolean,反之亦然. 缺点:此包装器属性不能在LINQ to Entities中使用. 2.在表上创建一个视图,该视图将返回0或1而不是字符列中的值.或者,在此EntitySet的模型中创建一个DefiningQuery(在这种情况下不应将其添加到数据库中).在大多数情况下,需要将属性的类型从SSDL中的“char(1)”更改为“bool”,并在CSDL中将System.String更改为System.Boolean.您应该编写一组存储过程来与您的实体执行CUD操作,并将这些过程映射为可更新的实体. 缺点:做了很多工作.

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读