gpt4 book ai didi

asp.net - Oracle Managed Dataacess EF6 自定义 edm 映射不适用

转载 作者:行者123 更新时间:2023-12-02 13:38:20 25 4
gpt4 key购买 nike

我们的 oracle 数据库中有很多 number(5,0) 实例,oracle 提供程序默认为 Int16。这会导致问题,因为我们可以使用比 int16 范围内允许的值更大的值。 Oracle 建议使用自定义映射覆盖 edm 映射(请参阅文档: https://docs.oracle.com/cd/E56485_01/win.121/e55744/entityDataTypeMapping.htm#ODPNT8300 )。

我面临的问题是,即使使用我的 asp.net mvc 项目的 web.config 中的自定义映射,覆盖也不会应用。我还创建了一个全新的控制台应用程序来测试这一点,但也没有运气。

有人知道如何使其工作或有更好的解决方案吗?

我可能应该添加此信息,

  • 来自 NuGet 的 VS 2015 EF6 Oracle Managed Data Acesss 最新版本
  • 我知道文档说您可以手动编辑表映射中的类型但是当你尝试改变它们时,它与 emd 模型冲突并且产生错误。
  • 手动编辑 xml 的解决方法消除精度在短期内是好的,但每次你都必须这样做从数据库更新它会覆盖更改。这是一件苦差事,因为我有部分表格有40多个条目需要编辑

(下面是 web.config/app.config 中的条目)

<oracle.manageddataaccess.client>
<version number="*">
<edmMappings>
<edmMapping dataType="number">
<add name="bool" precision="1" />
<add name="byte" precision="3" />
<add name="int16" precision="4" />
<add name="int32" precision="9" />
<add name="int64" precision="18" />
</edmMapping>
</edmMappings>
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
</version>

最佳答案

我不确定这对您的情况有帮助,但首先使用实体​​框架代码,您可以使用 Fluent API 来配置属性。默认代码优先约定为具有相同名称、顺序和数据类型的属性创建一个列。您可以覆盖此约定,如下所示。

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Configure Column
modelBuilder.Entity<Student>()
.Property(p => p.DateOfBirth)
.HasColumnName("DoB")
.HasColumnOrder(3)
.HasColumnType("datetime2");
}

有关 Fluent API 的其他资源:

entityframeworktutorial

msdn.microsoft

关于asp.net - Oracle Managed Dataacess EF6 自定义 edm 映射不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35916931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com