none
(Sumber: milist DOTNET) clear entity framework RRS feed

  • Pertanyaan

  • halo para master mau nanya seputar entity framework dong

     

    ada yang tahu tidak bagaimana mengclear entity framework dari related objectnya (bukan di delete)

    ceritanya begini saya catch setiap kali entity framework melakukan perintah save changes.

     

    lalu apabila error, saya ingin menggunakan object yang sama (ef object) untuk memasukkan data ke table error history.

     

    masalahnya ssaat di save object relatednya yang menyebabkan error tetap nyangkut di entity objectnya. mis

     

     

    using (Entities ent = new Entities())

    {

                try

                {

                            Customer cust = new Customer();

                            cust.locationId = 10 (foreign key ke table location--> sengaja dibikin tidak ada foreign keynya biar error)

                            ent.addCustomers(cust);

                            ent.savechanges();

                }

                catch (Exception ex)

                {

                            ErrorHistory myError = new ErrorHistory();

                        myError.message = ex.message;

                    ent.addErrorHistory(myError);

                        ent.savechanges();  ---> pasti akan error karena value object sebelumnya yaitu customer yang salah foreign keynya nyangkut

                }

    }

     

    apakah ada fungsi seperti ent.Clear() atau bagaimana gitu. thks sebelumnya

     

     


    Senin, 20 Juni 2011 07.28
    Moderator

Jawaban

  • Saya mencoba menjawab,

    mungkin maksud mas Timur bagaimana supaya kita bisa melakukan SaveChanges untuk kedua kali
    walaupun SaveChanges yang pertama kali error.

    di block try mas Timur menambahkan newCustomer ke ObjectContext.
    ent.addCustomers(cust);

    So, secara otomatis ObjectContext akan melacak setiap perubahan yang terjadi pada object newCustomer.

    Lalu mas Timur melakukan SaveChanges
    ent.savechanges();

    dan terjadi Error, kemudian mas Timur mencoba untuk SaveChanges kedua kali.

    Pada SaveChanges yang kedua, SaveChanges akan tetap error, karena ObjectContext
    sekarang sedang memiliki sebuah newCust yang belum sempurna.

    So, supaya kita bisa melakukan SaveChanges caranya adalah dengan men-Detach/ melepaskan
    object newCust tersebut dari dalam ObjectContext.

    Ini sample codenya :

            catch (Exception ex)

    {

    ErrorHistory myError = new ErrorHistory();

            myError.message = ex.message;

                    ent.addErrorHistory(myError);              

            var ose = ent.ObjectStateManager.GetObjectStateEntries(EntityState.Added);                    
            foreach(var c in ose)
            {
              ent.Detach((Customer)c.Entity);
              Console.WriteLine("Detach");
            }                    
             
           ent.savechanges()

    }

     

    Dijawab oleh: Agus Syahputra


    Agnes Sannie [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Senin, 20 Juni 2011 07.43
    Moderator