2009-04-25 10 views
7

Sto usando la classe LINQ-to-SQL. Ha un metodo object.InsertOnSubmit(). Ma restituisce void così posso ottenere i valori della chiave primaria dopo aver inserito un record.Come posso ottenere il valore della chiave primaria quando inserisco un nuovo record?

Desidero il valore della chiave primaria del record inserito di recente.

+0

dc.Object.InsertOnSubmit (newobj); dc.SubmitChanges(); Dopo aver richiamato le funzioni sopra, Harshal chiede di recuperare l'ID che il database ha impostato sull'inserimento di quel record. – Vikas

risposta

8

sì (supponendo che sia un campo identità).

Chiamare InsertOnSubmit da solo non invia l'inserto al db. È necessario chiamare SubmitChanges in modo che eventuali modifiche nell'istanza datacontext corrente vengano inviate al db.

Dopo aver chiamato SubmitChanges, è possibile accedere ai valori dall'istanza utilizzata quando si chiama InsertOnSubmit. LINQ to SQL popolerà questi valori per voi quando si fa l'inserto (che si verifica durante SubmitChanges)

Controllare questo esempio: http://msdn.microsoft.com/en-us/vbasic/bb737920.aspx#dynid

1

Se il modello è impostato correttamente, il PK deve essere impostato sull'oggetto interessato (quello appena inserito) automaticamente.

HTH.

Seth

0

Stai chiamando SubmitChanges() sul vostro contesto dati dopo aver inserito il disco? Il changeset non verrà valutato fino a quando non lo fai.

1

Dopo aver chiamato InserOnSubmit(), il valore della chiave primaria è impostato sui campi corrosivi nell'oggetto tabella youe. Puoi semplicemente accedere a quella proprietà per ottenere la chiave primaria.

7

In breve, non è necessario. L'oggetto stesso viene aggiornato.

public void Add(Person person) 
    { 
     using (MyEntities context = new MyEntities()) 
     { 
      Context.Persons.InsertOnSaveChanges(person); 
      Context.SaveChanges(); 
     } 
    } 

    public void Foo() 
    { 
     Person p = new Person { name = "John", age = 20 } 
     Add(p); 
     Int32 id = p.id; // id contains the newly inserted object's id 
    } 
4

Ecco un esempio di come funziona:

var dc = new MyDataContext(); 
var cust = new Customer{FirstName="John", LastName="Smith"}; 
dc.Customer.InsertOnSubmit(cust); 
dc.SubmitChanges(); 
//after SubmitChanges(), the Id is filled from the database 
var customerPrimaryKey = cust.Id; 
Problemi correlati