Bruk EntityFramework å lagre elementer (med nye elementer i flere tabeller) etter å ha blitt sendt over WCF til en Silverlight-app

stemmer
1

Jeg har en web-app som sender ADO Entity datamodell klasser over en WCF tjeneste for Silverlight.

Forestille seg dette forenklet struktur for databasen

[Element] Id Navn

[ItemDetail] Id ITEMID verdien

Mens varen er på min SilverlightApp jeg legge en ItemDetail til varen, er dette ADO, så det er noe sånt som:

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

Problemet er med følgende kode når jeg trykker dette objektet tilbake over min tjeneste det bare lagrer endringer i eksisterende poster, ikke de nye jeg har laget.

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();

Det må være en bedre måte enn å gå gjennom alt og manuelt sjekke deretter feste til objektet grafen. . . det ville bety spinkel kode som må oppdateres hver gang databasen endres og fjerne hele poenget med en ORM.

Er det en metode jeg mangler som går gjennom det aktuelle objektet og legger noe nytt fra en frittliggende objekt?

Jeg tror ikke engang på å sjekke det det nye skal være der, Ok, bør ikke det være en funksjon som sier her en frittliggende objekt, finne ut hvor det hører hjemme (muligens basert på nøkkelen) og legge den og eventuelle barn som bor i andre tabeller i databasen

Jeg er ikke sikker på om det er den riktige uttrykket, men jeg tror jeg har forklart hva jeg ønsker å gjøre.

Publisert på 29/12/2009 klokken 23:04
kilden bruker
På andre språk...                            

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