使用Entity Framework将Boolean属性映射到Oracle

Thi*_*ago 5 c# sql oracle entity-framework ef-model-first

我需要先使用实体​​模型将系统连接到oracle.我有一个实体"Entity1"的模型.顾名思义,"MyBool"是一个布尔属性.

在此输入图像描述

我成功地从模型生成了sql脚本并在oracle数据库上运行它.

然后我有这个代码:

static void Main(string[] args)
{
    Model1Container context = new Model1Container();
    Entity1 entity = context.Entity1.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

此代码抛出此异常:

指定的架构无效.错误:Model1.msl(8,12):错误2019:指定的成员映射无效.类型'Model1.Entity1'中成员'MyBool'的类型'Edm.Boolean [Nullable = False,DefaultValue =]'与'OracleEFProvider.number不兼容[Nullable = False,DefaultValue =,Precision = 1,Scale = 0 ''成员'MyBool''类型'Model1.Store.Entity1'.

我读了很多帖子,很多人说要添加:

  <oracle.dataaccess.client>
    <settings>
      <add name="bool" value="edmmapping number(1,0)" />
    </settings>
  </oracle.dataaccess.client>
Run Code Online (Sandbox Code Playgroud)

在配置文件中(在我的情况下,它是一个控制台应用程序然后app.config).但这并没有改变任何事情.实际上,我可以在此参数上设置任何值,并且错误将完全相同.看起来这个参数没有被读取.

然后有人说:将Oracle.DataAccess DLL添加到项目中.我做了什么,结果是一样的.

我知道关于这个话题有很多线索,但是他们中的任何一个都帮助了我,我不知道还能做什么.请注意,我的实际应用程序模型已在Sql Server上生产.

小智 4

经过一些研究后,我发现将数据库编号(1)映射到 .net bool 类型的自定义映射是完全可以的。缺点当然是 2019 映射错误(或模式验证错误)。如果您想消除通常不会对解决方案构建造成任何问题的映射错误,请在构建期间关闭模型验证,请将“构建时验证”设置为 false。