【问题标题】:Cannot generate sql in entity framework for oracle databaseoracle数据库实体框架无法生成sql
【发布时间】:2015-09-21 06:40:33
【问题描述】:

我正在尝试为我的实体框架模型生成 oracle sql。

我可以很好地生成SQLServer sql,错误只发生在oracle生成。

我已经为 VS Fine 安装了 Oracle 开发者工具。
我为数据库生成工作流选择了“Generate Oracle Via T4 (TPT).xaml (VS)”,为 DDL 生成模板选择了“SSDLTOOracle.tt (VS)”。

当我尝试从右键菜单生成 sql 时,反复出现以下错误:

名为“CsdlToSsdlAndMslActivity”的活动生成的 SSDL 无效,并出现以下错误:
默认值 (false) 与为小数指定的方面不兼容。该值必须为小数位数小于或等于 38,精度小于或等于 38。
... [剪辑]

我的模型不包含任何小数。
我尝试将我的 Int32 和 Double 的默认值设置为 (None) 以外的其他值,但这并没有解决问题。

谁能帮我解决这个问题?

【问题讨论】:

  • 您使用哪个版本的 Entity Framework 和 odp.net?
  • @BootStrapper 我所有的包都是 nuget 的最新版本 - EF 6.1.3、ODP.NET Managed 12.1.022、ODP.NET Managed EF 12.1.022

标签: c# oracle entity-framework odp.net ef-model-first


【解决方案1】:

您能否将该 xml 定义添加到项目的 app/web.config 文件中(在“配置”部分中),然后再试一次。

<oracle.dataaccess.client>
  <settings>
    <add name="bool" value="edmmapping number(1,0)" />
    <add name="byte" value="edmmapping number(3,0)" />
    <add name="int16" value="edmmapping number(5,0)" />
    <add name="int32" value="edmmapping number(10,0)" />
    <add name="int64" value="edmmapping number(19,0)" />
    <add name="int16" value="edmmapping number(38,0)" />
    <add name="int32" value="edmmapping number(38,0)" />
    <add name="int64" value="edmmapping number(38,0)" />
  </settings>
</oracle.dataaccess.client>

【讨论】:

  • 我正在使用托管驱动程序,所以我尝试了&lt;oracle.manageddataaccess.client&gt; &lt;version number="*"&gt; &lt;edmMappings&gt; &lt;edmMapping dataType="number"&gt; &lt;add name="bool" precision="1"/&gt; &lt;add name="byte" precision="3" /&gt; &lt;add name="int16" precision="5" /&gt; &lt;add name="int32" precision="10" /&gt; &lt;add name="int64" precision="19" /&gt; &lt;add name="int16" precision="38" /&gt; &lt;add name="int32" precision="38" /&gt; &lt;add name="int64" precision="38" /&gt; &lt;/edmMapping&gt; &lt;/edmMappings&gt; &lt;/version&gt; &lt;/oracle.manageddataaccess.client&gt;
  • 这不起作用,我在尝试生成模型时仍然收到相同的消息
  • 好的。您可以尝试使用“SSDLToSQL10.tt”选项(保留配置更改)吗?
  • 我尝试了三个数据库生成工作流的所有组合,以及两个 DDL 生成模板,它们都给了我同样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多