首页 新闻 会员 周边

请大家帮我解决一个entity framework4.1 for Oracle的问题

0
悬赏园豆:15 [已解决问题] 解决于 2012-02-04 18:53

主要是关于C#中实体类bool类型的问题

Oracle中只有number(1)这个类型,没有bool类型或bit类型

如何映射到C#中的bool类型呢?难道要把C#的bool类型改成int类型?

这会不会是ef4.1的bug,无法完全支持oracle的类型?

 

/// <summary>

/// 是否已修改

/// </summary>

[Display(Name="是否修改")]

public bool IsModify { get; set; }

 

错误提示

指定的架构无效。错误:  (32,12) : 错误 2019: 指定的成员映射无效。类型“Microinfo.Map.Data.ProjectInfo”中的成员“IsModify”的类型“Edm.Boolean[Nullable=False,DefaultValue=]”与类型“CodeFirstDatabaseSchema.ProjectInfo”中的成员“IsModify”的“OracleEFProvider.number[Nullable=False,DefaultValue=,Precision=38,Scale=0]”不兼容。 (114,12) : 错误 2019: 指定的成员映射无效

夜猫子罗的主页 夜猫子罗 | 初学一级 | 园豆:174
提问于:2012-01-16 00:06
< >
分享
最佳答案
0

在oracle中既然只有number(1),就用number(1)吧,在中间逻辑上判断number(1)返回的是否满足什么样的要求,就返回true,或者返回false。就可以了。

收获园豆:15
悟行 | 专家六级 |园豆:12559 | 2012-01-16 09:56

是不是说,要把实体类中得属性

/// <summary>

/// 是否已修改

/// </summary>

[Display(Name="是否修改")]

public bool IsModify { get; set; }

 

修改为int类型?不使用bool类型,以便进行映射?

 

/// <summary>

/// 是否已修改

/// </summary>

[Display(Name="是否修改")]

public int IsModify { get; set; }

夜猫子罗 | 园豆:174 (初学一级) | 2012-01-16 10:05

@夜猫子罗: 不是的,还是用int,你在方法中会处理int的,例如:判断int返回值大于零就让这个方法放回true,否则返回false。

悟行 | 园豆:12559 (专家六级) | 2012-01-16 10:07

@雎鸠: 

那个。。。。实体类属性和表字段相互映射,建立关联。。。。

/// <summary>

/// 是否已修改

/// </summary>

[Display(Name="是否修改")]

public bool IsModify { get; set; }

 

这个怎么改?entity-->映射特性attr(如何自定义?请说明,谢谢)-->表字段

写方法转换,我当然也知道,但是如何在ef4.1中自定义关联方法?这才是我要问得。

夜猫子罗 | 园豆:174 (初学一级) | 2012-01-16 10:17

@夜猫子罗: 

[Display(Name="是否修改")]

public int IsModify { get; set; }类型还是跟数据库一样的类型。

悟行 | 园豆:12559 (专家六级) | 2012-01-16 10:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册