代码之家  ›  专栏  ›  技术社区  ›  Abe Miessler

Linq是否具有@@Identity或Scope_Identity()的等效项?

  •  2
  • Abe Miessler  · 技术社区  · 14 年前

    假设加载了一个页面,我要做的第一件事就是找到插入到表中的最后一条记录的标识。

    我不会插入任何记录或任何东西,我只是想盲进去,找到插入的最后一个ID,可以使用LINQ完成吗?

    4 回复  |  直到 10 年前
        1
  •  4
  •   Jacob Proffitt    14 年前

    加载的集合对存储(处理自动增量值)一无所知。如果要知道加载集合中的最高ID,可以使用聚合Linq查询并选择Max ID。

    也可以使用Linq to SQL运行存储过程并检索作用域标识。

        2
  •  2
  •   marc_s    14 年前

    您总是可以从linq执行一段t-sql来获取值:

    SELECT 
        name, 
        OBJECT_NAME(OBJECT_ID) 'Table name',
        ISNULL(last_value, -1) 'Last Value'
    FROM 
        sys.identity_columns 
    

    然后从输出中获取必要的值。

        3
  •  1
  •   desco    14 年前

    你试过了吗? BLToolkit . 它支持linq以及linq2sql中不存在的许多其他有用操作:即具有人脸的dml:)

    关于您的问题:bltoolkit包含 插入标识 方法

    var value = db.Employee.InsertWithIdentity(() => new Northwind.Employee
    {
        FirstName = "John",
        LastName  = "Shepard",
        Title     = "Spectre",
        HireDate  = Sql.CurrentTimestamp
    });
    

    var value =
        db
        .Into(db.Employee)
            .Value(e => e.FirstName, "John")
            .Value(e => e.LastName,  "Shepard")
            .Value(e => e.Title,     () => "Spectre")
            .Value(e => e.HireDate,  () => Sql.CurrentTimestamp)
        .InsertWithIdentity();
    
        4
  •  -2
  •   Oscar Uriel Alayón Hernandez    10 年前

    大家好,我有一个关于linq-whit vb.net的解决方案!

            Dim Reg as new Consult
            Reg.Nombre = TxName.Text
            Reg.Edad = TxYears.Text
            Reg.Pulso = TxPulse.Text
            Reg.Tension = TxTens.Text
            Reg.Peso = TxKg.Text
            Db.Consulta.InsertOnSubmit(Reg)
            Db.SubmitChanges()
            MsgBox("You have created a New Consult #" & Reg.ConsultaId)
    
            DialogResult = Windows.Forms.DialogResult.OK
            Me.Close()
    

    这对我有用!!!!