【发布时间】:2013-10-14 12:31:57
【问题描述】:
我需要先使用实体模型将系统连接到 oracle。 我有一个实体“Entity1”的模型。 “MyBool”,顾名思义,它是一个布尔属性。
我成功地从模型生成了 sql 脚本并在 oracle 数据库上运行。
然后我有这个代码:
static void Main(string[] args)
{
Model1Container context = new Model1Container();
Entity1 entity = context.Entity1.FirstOrDefault();
}
这段代码抛出了这个异常:
指定的架构无效。错误:Model1.msl(8,12):错误 2019: 指定的成员映射无效。方式 成员“MyBool”的“Edm.Boolean[Nullable=False,DefaultValue=]”类型 'Model1.Entity1' 不兼容 'OracleEFProvider.number[Nullable=False,DefaultValue=,Precision=1,Scale=0]' 'Model1.Store.Entity1' 类型的成员 'MyBool'。
我看了很多帖子,很多人说要补充:
<oracle.dataaccess.client>
<settings>
<add name="bool" value="edmmapping number(1,0)" />
</settings>
</oracle.dataaccess.client>
在配置文件中(在我的情况下,它是一个控制台应用程序,然后是 app.config)。 但这并没有改变什么。事实上,我可以在这个参数上设置任何值,并且错误将完全相同。好像没有读取这个参数。
然后有人说:在项目中添加Oracle.DataAccess DLL。我这样做了,结果是一样的。
我知道有很多关于这个主题的主题,但其中任何一个都对我有帮助,我不知道还能做什么。 请注意,我的真实应用程序模型已经在 Sql Server 上投入生产。
【问题讨论】:
-
我将列类型更改为整数而不是布尔。在实体模型类(我首先使用代码)中,我创建了一个布尔属性,在 setter 和 getter 方法中,我将整数属性转换为 bool(然后我不必更改其他应用程序层)。它并不漂亮,但它确实有效。
标签: c# sql oracle entity-framework ef-model-first