Tôi khá chắc chắn bạn sẽ muốn sử dụng phương thức ObjectContext.ExecuteStoreQuery nếu bạn cần giá trị danh tính, thay vì ObjectContext.ExecuteStoreCommand.
Bạn sẽ cần phải sử dụng, như những người khác đã đề cập SCOPE_IDENTITY()
, chứ không phải là @@IDENTITY
như SCOPE_IDENTITY()
trả về giá trị bản sắc cho phạm vi thực hiện currente wheras @@IDENTITY
"Là một chức năng hệ thống mà trả về giá trị bản sắc cuối chèn vào."
Something như thế này nên làm như lừa:
using(var context = GetAContextThatsReadyToUse())
{
var valueForColumn1 = 5;
var result = ExecuteStoreQuery<int>("INSERT INTO table1 (Column1) VALUES ({0});SELECT SCOPE_IDENTITY()", valueForColumn1);
foreach(var item in result)
{
// Should only return one result, which is the identity value inserted by ExecuteStoreQuery
Console.WriteLine(item);
}
}
Phạm vi là gì? 2 chủ đề là phạm vi khác nhau? –
có chúng. kiểm tra http://msdn.microsoft.com/en-us/library/ms190315.aspx để biết tài liệu chi tiết về SCOPE_IDENTITY – Numenor
cách SCOPE_IDENTITY() khác với @@ identity, SCOPE_IDENTITY() tự trả về @@ identity ... và trong câu trả lời của tôi, tôi đã trả về danh tính @@ sau khi chèn ... – RameshVel