假设页面加载,我想要做的第一件事就是找到插入表格的最后一条记录的标识。
我不会插入任何记录或任何东西,我只是想盲目地找到最后一个id插入,可以使用LINQ完成吗?
答案 0 :(得分:4)
加载的集合对存储(处理自动增量值)一无所知。如果您想知道已加载集合中的最高ID,可以使用聚合linq查询并选择max id。
或者您可以使用Linq-To-Sql运行存储过程并检索SCOPE_IDENTITY。
答案 1 :(得分:2)
您总是可以从Linq执行一段T-SQL来获取值:
SELECT
name,
OBJECT_NAME(OBJECT_ID) 'Table name',
ISNULL(last_value, -1) 'Last Value'
FROM
sys.identity_columns
然后从该输出中获取必要的值。
答案 2 :(得分:1)
您是否尝试过BLToolkit。它支持LINQ以及LINQ2SQL中缺少的许多其他有用的操作:即具有人脸的DML:)
关于你的问题:BLToolkit包含 InsertWithIdentity 方法
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();
答案 3 :(得分:-2)
大家好,我在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()
这为我工作!!!