我使用基于服务的数据库(*.mdf
)作为我的数据库服务。我正在使用Linq-To-SQL类。
我想生成下一个ID。目前我正在尝试获取最后一个插入行的ID,然后添加1以获取下一个ID。我的主键数据类型是int。
private string genNextId()
{
var id = (from a in dc.nasabahs
orderby a.nomor_nasabah ascending
select a.nomor_nasabah).Last();
return id.ToString();
}
我收到错误:
不支持查询运算符“Last”。
答案 0 :(得分:4)
略有不同的方法呢?
private string genNextId()
{
var id = (from a in dc.nasabahs
select a.nomor_nasabah).Max();
return id.ToString();
}
答案 1 :(得分:3)
将您的功能更改为:
private string genNextId()
{
var id = (from a in dc.nasabahs
orderby a.nomor_nasabah descending
select a.nomor_nasabah).First();
return id.ToString();
}
答案 2 :(得分:0)
如果你真的想这样做,你应该使用仅在SQL Server 2012中可用的序列,尽管像Oracle这样的其他数据库已经存在了很长时间。 Sequence是一个生成数值的数据库对象,一旦生成并消耗了一个值,就不会重新生成它。优点是您可以在不进行任何插入的情况下获得值。但是我不认为linq-to-sql支持这个,所以你必须使用原始的ado.net。
答案 3 :(得分:0)
想到加我的两分钱。上面的每个人都没有真正告诉如何为基于服务的数据库或mdx文件配置身份属性。 创建表或在第一次创建时,转到表定义,然后在列属性中,您将看到类似身份规范的内容: 是标识,标记为是。增量设置为1(取决于您所需的步长)和种子设置为1(初始值)