【问题标题】:Entity Framework: Creating entities from Oracle View实体框架:从 Oracle 视图创建实体
【发布时间】:2016-09-20 16:12:56
【问题描述】:

这个问题我已经有一个多星期了,我知道有很多关于这个的问题,但我还没有看到有人使用 Oracle。我正在使用 EF 数据库 首先,我需要从 Oracle 视图创建一个实体,并且由于“您需要定义主键”的限制,EF 不会让我这样做。

我收到的消息:

  1. “VIEW_NAME”类型的关键部分“COLUMN_NAME”无效。密钥的所有部分都必须不可为空。
  2. 警告错误 6002:表/视图“VIEW_NAME”没有定义主键。已推断出密钥,并将定义创建为只读表/视图。

我尝试过的解决方法:

  1. 修改de.edmx,自己添加主键。 结果:框架会说“该列可以为空,我们不能接受”

  2. 使用以下语法修改我的视图:

    CREATE OR REPLACE FORCE VIEW SCHEMA.MY_VIEW
    (COLUMN, FIELD1, FIELD2, FIELD3)
    AS 
    SELECT 
         NVL(ROW_NUMBER() OVER(ORDER BY FIELD1), 0) AS COLUMN
         , FIELD1
         , FIELD2
         , FIELD3
    
    WITH READ ONLY;
    
    ALTER VIEW SCHEMA.MY_VIEW
     ADD CONSTRAINT MY_VIEW_PK
      PRIMARY KEY
      (CODIGO_MONEDA)
      RELY
      DISABLE;
    

我已经尝试了上述查询的多个版本,将 NVL 添加到其他字段,创建主键。我就是无法让它工作。

【问题讨论】:

  • 我想象你正在使用 DB First,是吗?
  • @bubi 是的,DB First。我将编辑添加该问题的问题。

标签: oracle entity-framework entity-framework-6


【解决方案1】:

不幸的是,我认为没有解决方案。 我从今年年初开始抱怨,EF 团队已经认识到这是一个错误,但他们在年中削减了 EF6 的所有错误修复以开发 EF Core。 见此链接:http://entityframework.codeplex.com/workitem/2888

其实问题出在设计师身上。我假设您使用的是 Visual Studio 2015;这就是我们仍在使用带有 EF 6.1.3 的 Visual Studio 2012 的原因。

如果没有修复,我们无法迁移到 Visual Studio 2015。

我很惊讶没有那么多人抱怨这一点。这只是使用 Oracle 数据库的 .NET 项目的杀手锏。

问候

【讨论】:

  • 你的意思是你们使用 VS 2012 并且实际上可以在没有定义主键的情况下映射实体?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2010-11-17
  • 2015-12-26
  • 1970-01-01
相关资源
最近更新 更多