Linq-to-Entity在插入Oracle时获得主键

时间:2012-10-02 20:22:10

标签: c# oracle entity-framework linq-to-entities

我是Linq-to-Entity的菜鸟。这些是我的数据库表。

create table Jobs 
( ID            NUMBER PRIMARY KEY,
  ....
)

create table Responsibilities
( ID            NUMBER PRIMARY KEY,
  JobID         NUMBER
  ....
)

JobID列是引用作业(ID)的外键。

使用这些表,在Visual Studio中我自动创建允许我与这些表接口的类。然后我尝试创建Jobs并将它们插入数据库。我在每个表上都有触发器,为主键的每个表生成一个唯一的ID。下面是一段创建Job的代码片段。

using (Workflow.WorkflowEntities entity = new Workflow.WorkflowEntities(connectionString))
{
    JOBS j = new JOBS();
    entity.AddToJOBS(j);
    entity.SaveChanges();

我遇到的一个问题是,当保存作业时,我没有得到主键。当我想创建责任对象并将它们添加到作业然后集中保存所有内容时,这尤其成问题。它就像它没有在Responsibilities对象中正确填充JobID字段。

这样做的正确方法是什么?任何指针都非常感谢,

MJ

2 个答案:

答案 0 :(得分:3)

我找到了答案。本页末尾第3页。

https://forums.oracle.com/forums/thread.jspa?messageID=9904561

显然,Visual Studio 2010无法正确保存XML中的StoreGeneratedPattern属性。

编辑1:我认为Visual Studio 2010 Service Pack 1解决了这个问题。

答案 1 :(得分:1)

您需要在列的属性中设置StoreGeneratedPattern =“Identity”