在使用oracle数据库的asp.net MVC中的数据库中插入后获取对象ID

时间:2015-05-15 10:00:11

标签: c# asp.net-mvc oracle entity-framework-5

请,我需要帮助来检索我在oracle数据库中插入的对象的ID(主键),许多建议说:

 context.Entity.add(myObject);
 context.SaveChanges();
 int x=myObject.ID;

但那并没有奏效。 当我试图在控制器中的以下语句中打印x时:

return View(x.ToString());

(因为我不能用另一种方式打印这个值),我收到值" 0"但是当我打开数据库时,我找到了一个ID的值(不是" 0&#34) 我的oracle数据库有序列和触发器来为myObject分配ID。 我不知道问题在哪里,在数据库中?或数据库和MVC之间的兼容性问题? 谢谢你的高级:)

1 个答案:

答案 0 :(得分:0)

问题出在您的模型上。 EF需要知道有问题的字段是在db。中设置的。

在您的模型中,添加DatabaseGenerated选项,如下所示:

public class myObject
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    ...
}

可与DatabaseGeneratedOption一起使用的options已计算(在插入和更新时生成),标识(在插入时生成)和(未生成)。

执行此操作后,EF知道在保存后从数据库中获取值。否则,它假定数据库未触及您发送的值。