2010-05-26 2 views
2

Допустим, у меня есть таблица с RowId и Value:LINQ Получение следующего идентификатора строки?

1 valueA 
2 valueB 
3 valueC 
4 valueD 

Тогда давайте говорить, что я удалить 4-й ряд:

1 valueA 
2 valueB 
3 valueC 

Так следующая строка ID будет 5. Так как 4-й строке был удален, я не могу просто найти последнюю строку в таблице и добавить 1, чтобы получить следующий идентификатор строки. Как получить следующий идентификатор строки?

Спасибо!

+3

Зачем вам нужно знать, что представляет собой следующий автогенерированный идентификатор? – Jimmy

+0

Это для создания табличных отношений при вставке новой строки в таблицу. – sooprise

+2

Это должно обрабатываться через SQL автоматически. Посмотрите на настройку первичных ключей, которые автоматически увеличиваются. В противном случае просто получить последнюю запись и сделать +1 будет работать, хотя это не идеально – Jimmy

ответ

3

В LinqToSql, если два класса каждый иметь первичный ключ столбцов IDENTITY и имеет соединительную ассоциацию (созданную FKEY в базе данных или вручную в конструкторе), вы можете сделать две ваши сопутствующая вставки, как это:

Customer c = new Customer() {Name = "Bob"}; 
Order o = new Order() {Customer = c, Quantity = 5}; 

myDataContext.InsertOnSubmit(c); 
    //submit changes will insert c and o 
    // in the right order and with all id's populated. 
myDataContext.SubmitChanges(); 
    //the id's are populated 
int customerID = c.CustomerID; 
int orderID = o.OrderID; 
customerID = o.CustomerID; 
+0

+1 точно - пусть Linq-to-SQL обрабатывает все эти беспорядочные детали и не беспокоится о догадывании идентификаторов раньше времени! –

+0

Думаю, вам нужно будет вставить InsertOnSubmit (o), если вы хотите, чтобы оба объекта вставили. c не ссылается o. Правильно? –

+0

c ссылки o через свойство Orders, созданное ассоциацией. Эта же ассоциация создала свойство Order.Customer. –

2

После того, как вы вставляете новую строку, вы получите идентификатор строки. Я не понимаю, зачем вам это нужно, прежде чем вставлять его!

Смежные вопросы