270 messaggi dal 12 gennaio 2007
Salve a tutti,
vorrei popolare un dataset con linq.
Grazie anticipatamente a chi mi dice come si fa.

Massimo Sanfelici

Mantova
lo puoi fare utilizzando le classi SqlDataAdapter e DataTable (o DataSet)

var results = from c in context.Customers
                where c.City == "London"
                select c;

SqlCommand cmd = context.GetCommand(results) as SqlCommand;

DataTable dataTable = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataTable);

Marchi Giuseppe
http://www.peppedotnet.it
270 messaggi dal 12 gennaio 2007
Grazie,molto interessante.Scusa se ne aprofitto,per la variazione,inserimento e cancellazione come devo procedere.Le varie query le so fare,ma come le aggiungo al SqlDataAdapter

Massimo Sanfelici

Mantova
puoi sfruttare la classe SqlCommandBuilder, che a partire dal tuo DataAdapter, ti genera le query di insert, update e delete.

var linqQuery = from c in context.Customers
                where c.City == "London"
                select c;

SqlCommand cmd = context.GetCommand(linqQuery) as SqlCommand;

DataTable dataTable = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataTable);

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.InsertCommand = builder.GetInsertCommand();
adapter.DeleteCommand = builder.GetDeleteCommand();
adapter.UpdateCommand = builder.GetUpdateCommand();

Marchi Giuseppe
http://www.peppedotnet.it
270 messaggi dal 12 gennaio 2007
Mi raccomando non ridere,probabilmente mi sfugge qualcosa,sono un novellino.
Questo è il codice:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ctx As New Dctx.DataClassesDataContext
Dim linqQuery = From c In ctx.Testata_Carrellos _
Where c.UserName = "massimo" _
Select c
Dim cmd As New SqlCommand
cmd = TryCast(ctx.GetCommand(linqQuery), SqlCommand)
Dim dataTable As New DataTable()
Dim adapter As New SqlDataAdapter(cmd)

Dim builder As New SqlCommandBuilder(adapter)
adapter.InsertCommand = builder.GetInsertCommand()
adapter.DeleteCommand = builder.GetDeleteCommand()
adapter.UpdateCommand = builder.GetUpdateCommand()
adapter.Fill(dataTable)
dataTable.Rows(1).Item(3) = "eeee"
adapter.Update(dataTable)
Me.GridView1.DataSource = dataTable
Me.GridView1.DataBind()
End Sub
In questo modo mi filtra i record ma non fa la variazione.
Se hai voglia di rispondermi mi faresti un piacere,ciao grazie.

Massimo Sanfelici

Mantova
ma ti ritorna qualche errore in particolare ?

prova a chiamare il metodo AcceptChanges su datatable prima di eseguire la modifica.

dataTable.AcceptChanges()
dataTable.Rows(1).Item(3) = "eeee" 
adapter.Update(dataTable) 


io ho provato in locale e l'update viene eseguito correttamente

Marchi Giuseppe
http://www.peppedotnet.it
270 messaggi dal 12 gennaio 2007
Ti chiedo scusa funzionava anche senza AcceptChanges,guardavo un 'altro record.
grazie 10000000000

Massimo Sanfelici

Mantova
figurati!

Marchi Giuseppe
http://www.peppedotnet.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.