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

get object ID after insert in database in asp.net MVC with oracle databse

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

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

但这没有用。 当我尝试在控制器中的以下语句中打印 x 时:

return View(x.ToString());

(因为我无法以其他方式打印此值),我收到值“0”,但是当我打开数据库时,我发现了一个 ID 值(不是“0”) 我的 oracle 数据库有序列和触发器来为 myObject 分配 ID。 我不知道问题出在哪里,在数据库中?或数据库和MVC 之间的兼容性问题? 先谢谢你:)

问题出在您的模型上。 EF 需要知道相关字段已在数据库中设置。

在您的模型中,像这样添加 DatabaseGenerated 选项:

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

可以与 DatabaseGeneratedOption 一起使用的 optionsComputed(在插入和更新时生成),Identity(生成插入)和 None(未生成)。

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