实体框架:从Oracle视图创建实体

问题描述:

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

消息我已经得到了:

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

变通,我已经试过:

  1. 修改德的.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; 
    
  3. 我试过很多版本上面的查询,将NVL添加到其他字段,创建一个主键。我只是无法让它工作。

开始=>
+0

我想象你正在使用DB首先,是吗? – bubi

+0

@bubi是,DB首先。我将编辑添加该问题的问题。 – ggderas

不幸我认为没有解决方案。 我从今年初就抱怨说,EF Team已经意识到这是一个错误,但是他们在今年年中中断了EF6开发EF Core的所有bug修复。 看到这个链接:http://entityframework.codeplex.com/workitem/2888

事实上,问题是在设计师。我假定你正在使用Visual Studio 2015;这就是为什么我们仍然使用Visual Studio 2012和EF 6.1.3。

我们无法修复时无法迁移到Visual Studio 2015。

我非常惊讶,没有那么多人抱怨。这对于使用Oracle数据库的.NET项目来说只是一个杀手锏。

Regards

+0

你的意思是你们使用VS 2012,你可以在没有定义主键的情况下映射实体吗? – ggderas