Asp.net Oracle托管DataAccess EF6自定义edm映射未应用
我们的oracle数据库中有很多number(5,0)的实例,oracle提供程序默认为Int16。这会导致一个问题,因为我们可以有一个大于int16范围内允许的相同值。Oracle建议使用自定义映射覆盖edm映射(请参阅文档:) 我面临的问题是,即使在我的asp.net mvc项目的web.config中有这些自定义映射,覆盖也不会应用。我还创建了一个全新的控制台应用程序来测试这一点,但也没有运气 有人知道如何使它工作或有更好的解决方案吗 我可能应该添加这些信息,Asp.net Oracle托管DataAccess EF6自定义edm映射未应用,asp.net,oracle,entity-framework-6,Asp.net,Oracle,Entity Framework 6,我们的oracle数据库中有很多number(5,0)的实例,oracle提供程序默认为Int16。这会导致一个问题,因为我们可以有一个大于int16范围内允许的相同值。Oracle建议使用自定义映射覆盖edm映射(请参阅文档:) 我面临的问题是,即使在我的asp.net mvc项目的web.config中有这些自定义映射,覆盖也不会应用。我还创建了一个全新的控制台应用程序来测试这一点,但也没有运气 有人知道如何使它工作或有更好的解决方案吗 我可能应该添加这些信息, VS 2015 EF6 O
- VS 2015 EF6 Oracle Managed Data Acesss最新版本,来自NuGet
- 我知道文档中说可以在表映射中手动编辑类型 但当你试图改变它们时,它与emd模型和 生成一个错误
- 手动编辑要编辑的xml的变通方法 移除精度在短期内是好的,但每次你都必须这样做 从数据库更新它会覆盖更改。这是一件家务事,因为我 某些表格中有40多个条目需要编辑
我不确定这对您的情况是否有帮助,但首先使用实体框架代码,您可以使用Fluent API配置属性。默认代码优先约定为具有相同名称、顺序和数据类型的属性创建列。您可以覆盖此约定,如下所示
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Configure Column
modelBuilder.Entity<Student>()
.Property(p => p.DateOfBirth)
.HasColumnName("DoB")
.HasColumnOrder(3)
.HasColumnType("datetime2");
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
//配置列
modelBuilder.Entity()
.Property(p=>p.DateOfBirth)
.HasColumnName(“DoB”)
.1.1订单(3)
.HasColumnType(“日期时间2”);
}
有关Fluent API的其他资源:
您是否打算永远坚持EF 6版本?如果不是,因为edmx designer在7版本中被删除了,也许您的团队应该开始习惯于自己处理映射,而不是让设计师直接完成工作。很高兴我能提供帮助。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Configure Column
modelBuilder.Entity<Student>()
.Property(p => p.DateOfBirth)
.HasColumnName("DoB")
.HasColumnOrder(3)
.HasColumnType("datetime2");
}