Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq将实体在插入Oracle时获取主键_C#_Oracle_Entity Framework_Linq To Entities - Fatal编程技术网

C# Linq将实体在插入Oracle时获取主键

C# Linq将实体在插入Oracle时获取主键,c#,oracle,entity-framework,linq-to-entities,C#,Oracle,Entity Framework,Linq To Entities,我是一个没有灵魂的人。这些是我的数据库表 create table Jobs ( ID NUMBER PRIMARY KEY, .... ) create table Responsibilities ( ID NUMBER PRIMARY KEY, JobID NUMBER .... ) JobID列是引用JobsID的外键 使用这些表,我在VisualStudio中自动创建允许我与这些表进行接口的类。然后我尝试创建

我是一个没有灵魂的人。这些是我的数据库表

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

create table Responsibilities
( ID            NUMBER PRIMARY KEY,
  JobID         NUMBER
  ....
)
JobID列是引用JobsID的外键

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

using (Workflow.WorkflowEntities entity = new Workflow.WorkflowEntities(connectionString))
{
    JOBS j = new JOBS();
    entity.AddToJOBS(j);
    entity.SaveChanges();
我遇到的一个问题是,当作业被保存时,我没有得到它的主键。当我想要创建责任对象并将其添加到作业中,然后集体保存所有内容时,这尤其是一个问题。它好像没有正确地填充职责对象中的JobID字段

正确的方法是什么?非常感谢任何指点


mj

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

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

我找到了答案。本页末帖第三名

显然,VisualStudio2010没有在XML中正确保存StoreGeneratedPattern属性


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

我找到了答案。本页末帖第三名

显然,VisualStudio2010没有在XML中正确保存StoreGeneratedPattern属性


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

可能重复:可能重复:我做了那个更改。我将属性更新为Identity,但它仍然不起作用。我看不到Linq在insert上生成唯一键。它总是希望使用0,大概是因为当我创建作业对象时,ID是0。我还注意到有一个方法JOBS.CreateJOBS,它将ID作为输入参数。不过,它的工作原理并没有什么不同。@mj_u您仍然需要在oracle端使用触发器,linq并没有创造出您告诉linq db isI做出了更改的价值。我将属性更新为Identity,但它仍然不起作用。我看不到Linq在insert上生成唯一键。它总是希望使用0,大概是因为当我创建作业对象时,ID是0。我还注意到有一个方法JOBS.CreateJOBS,它将ID作为输入参数。不过,它的工作原理并没有什么不同。@mj_u您仍然需要在oracle端使用触发器,linq并没有创建您告诉linq db是正确的值