使用 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 一起使用的 options 是 Computed(在插入和更新时生成),Identity(生成插入)和 None(未生成)。
执行此操作后,EF 知道在保存后从数据库取回值。否则,它假定数据库没有触及您发送的值。
拜托,我需要帮助来检索我插入到 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 一起使用的 options 是 Computed(在插入和更新时生成),Identity(生成插入)和 None(未生成)。
执行此操作后,EF 知道在保存后从数据库取回值。否则,它假定数据库没有触及您发送的值。