实体框架:从Oracle视图创建实体
我一直有这个问题已经一个多星期了,我知道有很多这方面的问题,但我还没有看到过使用Oracle的问题。我使用EF数据库首先,我需要从Oracle视图创建实体,并且由于“您需要定义主键”限制,EF不会让我。实体框架:从Oracle视图创建实体
消息我已经得到了:
- 关键部分 'COLUMN_NAME' 类型 'VIEW_NAME' 是无效的。密钥的所有部分必须是不可空的。
- 警告错误6002:表/视图'VIEW_NAME'没有定义主键。关键是推断出来的,定义是作为只读表/视图创建的。
变通,我已经试过:
修改德的.edmx,并添加主键自己。 结果:框架会说:“这列可以为空,我们不能接受”
-
使用下面的语法修改我的观点:
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添加到其他字段,创建一个主键。我只是无法让它工作。
不幸我认为没有解决方案。 我从今年初就抱怨说,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
你的意思是你们使用VS 2012,你可以在没有定义主键的情况下映射实体吗? – ggderas
我想象你正在使用DB首先,是吗? – bubi
@bubi是,DB首先。我将编辑添加该问题的问题。 – ggderas