我在多個表中插入數據。我需要知道表中最後插入的(自動遞增的)ID。我需要將它用作其他表格中的Foriegn Key。如何在實體框架中找到最後插入的行的標識?
簡而言之,我需要在T-Sql中替代@@Identity
。
我在多個表中插入數據。我需要知道表中最後插入的(自動遞增的)ID。我需要將它用作其他表格中的Foriegn Key。如何在實體框架中找到最後插入的行的標識?
簡而言之,我需要在T-Sql中替代@@Identity
。
實體框架會自動加載最後插入的ID來填充插入實體的主鍵列:
var customer = new Customer() { Name = "Steven" };
context.AddObject(customer);
context.SaveChanges();
var id = customer.Id;
注意,Id
屬性調用SaveChanges()
萬一StoreGeneratedPattern
屬性設置爲後才被填充模型「存儲」部分中自動遞增的ID列的「標識」或「計算」。
只有在模型的存儲部分中的StoreGeneratedPattern屬性設置爲「Identity」或「Computed」以用於自動遞增的ID列時,纔是正確的。 – Devart 2010-11-01 12:15:47
總之,如果你需要的ID爲某些其他目的......調用EF插入方法對於一些實體自動返回當前插入的行ID ...
var rowId=db.Insert(Entity);
我猜... PLZ讓我知道,如果我錯了....米JST在EF初學者..
可能,這將幫助:
var erp = new UserDataContext();
string euname = "Ded";
string eupassword = "Moro$ilka";
string eposition = "Moroz";
var status = erp.Database.ExecuteSqlCommand(@"EXEC InsertNewUser @neuname,@neupassword,@neuposition",
new SqlParameter("@neuname",euname),
new SqlParameter("@neupassword",eupassword),
new SqlParameter("@neuposition",eposition)
);
erp.SaveChanges();
int lastid = erp.eusers.Count();
@Steven - 這應該張貼一個答案。 – Yakimych 2010-11-01 11:06:54
**建議**使用'SCOPE_IDENTITY()'而不是'@@ IDENTITY'。 – Esteban 2013-06-08 06:59:45