3

我正在使用基于服务的数据库 ( *.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”。

4

4 回答 4

3

稍微不同的方法呢?

private string genNextId()
{
    var id = (from a in dc.nasabahs
              select a.nomor_nasabah).Max();

    return id.ToString();
}
于 2013-08-03T00:18:02.093 回答
2

将您的功能更改为:

private string genNextId()
    {
        var id = (from a in dc.nasabahs
                  orderby a.nomor_nasabah descending
                  select a.nomor_nasabah).First();

        return id.ToString();
    }
于 2013-08-03T00:11:55.003 回答
0

只是想加我的两分钱。上面的每个人都没有真正告诉如何为基于服务的数据库或 mdx 文件配置身份属性。创建表后或第一次创建时,转到表定义,然后在列属性中,您将看到类似标识规范:是否标识,标记为 Yes.Increment 设置为 1(取决于您所需的步长)和 Seed 设置为1(初始值)

于 2015-01-30T22:45:08.633 回答
0

如果您真的想这样做,您应该使用仅在 SQL Server 2012 中可用的序列,尽管 Oracle 等其他数据库已经使用了很长时间。序列是一个生成数值的数据库对象,一旦生成和使用一个值,它将不会重新生成。优点是您无需进行任何插入即可获得值。但是我不认为 linq-to-sql 支持这个,所以你必须使用原始的 ado.net。

于 2013-08-03T10:25:23.963 回答