【发布时间】:2022-01-23 14:31:20
【问题描述】:
我首先使用 EntityFramework 6.4.4 代码来创建数据库。我的数据库服务器是 Oracle 19C。我的数据库中的一个字段是货币字段(十进制),这个字段,我们称之为价格,大部分时间会乘以大十进制值,但有时也会乘以小值,所以我需要精确度和规模灵活适应所有值大小。
在旧系统中,该字段的数据类型为 NUMBER,但这是直接使用 PLSQL 设置的,现在无论我使用 EF6 (C#) 尝试什么,我都会不断收到 Number(18,2)。
我在网上查了一下,发现from this article这是C#的十进制约定,而我may disable it。
所以在我的代码中,我在AppDbContext 中禁用了它,如下所示:
using TestDB.Model;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace TestDB
{
public class MyDbModel : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<DecimalPropertyConvention>();
.
.
}
但我现在得到的结果是 NUMBER(38,0),这是 Oracle 的默认值。
如何将字段的数据类型设置为NUMBER 而没有精确度和比例?
还是 EF6 不支持?
【问题讨论】:
标签: c# database oracle entity-framework entity-framework-6