49 messaggi dal 07 giugno 2004
Buongiorno,
sto facendo delle prove in Silverlight 2 utilizzando i DataService.
Nel database ho 2 tabelle, una "Clienti" e l'altra "Indirizzo Clienti" con una relazione di tipo uno a molti.
Ho creato i Data Service, creo, modifico e cancello senza problemi gli utenti ma sto trovando GROSSISSIME difficoltà quando cerco di creare un nuovo indirizzo. Vi riporto di seguito il Codice:


EntitàClienti = new Clienti_Entities(new Uri(
string.Format(QueryString),
UriKind.Relative));
SEDI_CLIENTE Sede = new SEDI_CLIENTE();
Sede.Nome = txtNome.Text;
Sede.Cap = txtCap.Text;
Sede.Cellulare = txtCellulare.Text;
Sede.Comune = txtComune.Text;
Sede.Descrizione = txtDescrizione.Text;
Sede.EMail = txtEmail.Text;
Sede.Indirizzo = txtIndirizzo.Text;
Sede.Provincia = txtProvincia.Text;
Sede.Telefono = txtTelefono.Text;
Sede.ANA_CLIENTI = _cliente;

_cliente.SEDI_CLIENTE.Add(Sede);
EntitàClienti.AttachTo("ANA_CLIENTI", _cliente);
EntitàClienti.BeginSaveChanges(SalvaClienteConSede, _cliente);


Questo codice non mi da nessun tipo di errore ma non salva neanche nessun tipo di dato, mi sapreste dare delle info a tal proposito?

Grazie
domanda, hai utilizzato il designer per definire la tua classe che eredita da DataService<T>?

perche dovresti avere dei metodi tipo AddToXXX , ad esempio AddToIndirizzi

quindi dovresti fare:

serviceDataContext.AddToIndirizzi(NuovoIndirizzo);
serviceDataContext.SetLink(myClinete,"Indirizzi",NuovoIndirizzo);
serviceDataContext.BeginSaveChanges(SaveChangesOptions.Batch, ecc ecc);

il metodo AttachTo serve per altro

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
49 messaggi dal 07 giugno 2004
Ciao,
innanzitutto grazie per la risposta,
hai utilizzato il designer per definire la tua classe che eredita da DataService<T>?
Si, ho utilizzato il designer.

Ho effettuato quel tipo di salvataggio perchè avevo seguito la vostra guida presente a questo indirizzo :
http://www.linqitalia.com/articoli/entity-framework/modificare-dati-entity-framework-p-2.aspx
Ho fatto come mi hasuggerito ma mi da un errore :
InvalidContestException : Il contesto non sta attualmente rilevando l'entità

Di seguito il codice

EntitàClienti.AddToSEDI_CLIENTE(Sede);
EntitàClienti.SetLink(_cliente, "SEDI_CLIENTE", Sede); <-- QUI TROVA L'ERRORE (SEDI_CLIENTE è il nome dell'entità Sede)
EntitàClienti.BeginSaveChanges(SalvaClienteConSede, _cliente);

Grazie
Modificato da Animo79 il 04 febbraio 2009 09.53 -
Benche ADO.NET DATA SERVICE possa utilizzare EF come sistema di persistenza sono due cose diverse, il primo è un servizio specializzato WCF il secondo è un ORM.

detto questo

SEDI_CLIENTE non deve essere un entità ma il nome della proprietà alla quele deve essere assegnata sede.

l'errore è devuto probabilmente al fatto che _cliente non è attualmente non contesto, come lo recuperi?

e poi il salvataggio, quado esegui un insert e un SetLink ( o più di uno) deve essere eseguito sempre con l'opzine: SaveChangesOptions.Batch

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
49 messaggi dal 07 giugno 2004
Grazie per le tue immediate risposte, sono riuscito a risolvere il tutto dopo 3 giorni di botte contro il muro.
Bisogna usare SetLink come mi hai suggerito, ma prima devo fare l'addTo della proprietà che in questo caso sarà ANA_CLIENTI (proprietà della sede) e non come tentavo di fare io usando SEDI_CLIENTE.
Detto questo ti ringrazio tantissimo, mi hai datto un ottima dritta e senza il tuo consiglio non so per quanto avrei ancora utilizzato il muro sito dietro alla mia postazione.
Aggiungo la parte di codice che ho utilizzato per chi dovesse avere il mio stesso problema.

Devo aggiungere una nuova sede :

SEDI_CLIENTE Sede = new SEDI_CLIENTE(); // CREO LA SEDE
ANA_CLIENTI _cliente = valorizzo tramite dataservice;
Contesto_Clienti EntitàClienti = valorizzo il contesto;

EntitàClienti.AttachTo("ANA_CLIENTI", _cliente);
EntitàClienti.AddToSEDI_CLIENTE(Sede);
EntitàClienti.SetLink(Sede, "ANA_CLIENTI", _cliente);

Ciao e ancora grazie
di nulla

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

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.