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是正确的值