Verwenden Sie EntityFramework Artikel zu speichern (mit neuen Elementen in mehreren Tabellen) nach über WCF zu einer Silverlight-Anwendung gesendet werden

stimmen
1

Ich habe eine Web-Anwendung, die ADO Entity Data Model-Klassen über einen WCF-Dienst, um Silverlight sendet.

Stellen Sie sich diese vereinfachte Struktur für die Datenbank

[Artikel] ID-Name

[ItemDetail] Id ItemId Wert

Ich füge eine ItemDetail auf den Punkt, während der Artikel in meinem SilverlightApp ist, ist dies ADO es ist also so etwas wie:

var fv = new ItemDetail();
            fv.Value = value;
            fv.ItemId = Item.Id;
            Item.ItemDetails.Add(fv);

Das Problem ist, mit dem folgenden Code, wenn ich dieses Objekt wieder über meinen Dienst schieben speichert nur die Änderungen der vorhandenen Datensätze, nicht die neuen, die ich geschaffen habe.

foreach (var item in entities)
        {
            if(item.Id == 0)
            {
                cEnts.Items.AddObject(item);
            }
            else
            {
                EntityKey key = cEnts.CreateEntityKey(Items, item);
                object orig;
                if(cEnts.TryGetObjectByKey(key,out orig))
                {
                    cEnts.ApplyCurrentValues(key.EntitySetName,item);
                }
            }
        }

        cEnts.SaveChanges();

Es muss ein besserer Weg sein, als durch alles gehen und manuell überprüft dann auf die Objektgraphen zu befestigen. . . das würde fadenscheinigen Code bedeuten, die jedes Mal aktualisiert werden muss, um die Datenbank geändert wird, und entfernen Sie den ganzen Punkt eines ORM.

Gibt es eine Methode, die ich vermisst habe, dass geht durch das betreffende Objekt und fügt etwas Neues aus einem frei stehenden Objekt?

Ich glaube nicht einmal, die Überprüfung es es die neue da sein sollte, sollte es nicht eine Funktion sein, die „Ok sagt, hier ist ein frei stehendes Objekt, herauszufinden, wo es hingehört (möglicherweise basierend auf dem Schlüssel) und fügen Sie und Kinder dass leben in anderen Tabellen der Datenbank“

Ich bin mir nicht sicher, ob das der richtige Ausdruck ist, aber ich glaube, ich habe erklärt, was ich tun möchte.

Veröffentlicht am 30/12/2009 um 00:04
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more