我有一个 web api post 方法,可以在我的 Oracle 数据库的表中插入一个新行。我在处理表的主键时遇到了问题,该主键是一个序列值。我该怎么办 my_primary_key_seq.nextval
在 Entity Framework 中?目前此代码有效,但当通过我们旧的 .net 网络表单插入新行时,它将违反 PK 唯一约束,该表单使用序列下一个值作为下一个主键。
decimal nextPK = context.FORMPPs.OrderByDescending(p => p.PPID).FirstOrDefault().PPID + 1;
item.PPID = nextPK;
context.FORMPPs.Add(item);
int result = context.SaveChanges();
最佳答案
我遇到了同样的问题,并在本网站和 Oracle 的帮助下解决了这个问题。我假设您使用的是 Database First,因为您提到了另一个旧应用程序使用相同的数据库。
我必须做一些事情。就像 Daniel Gabriel 提到的那样,如果您允许 Oracle 管理身份,您就不需要调用序列来找出号码,数据库会为您处理。但是让它工作有点棘手,因为您可能需要对数据库进行大量更改。
StoreGeneratedPattern="Identity"
Oracle entity in VS entity framework doesnt update the primary key in code
关于.net - 如何在 .NET Entity Framework 中获取 Oracle 的下一个序列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260411/