Entity Framework - Reassigning child entity's parent

Discussion in 'ASP .Net' started by Norm, Jul 4, 2009.

  1. Norm

    Norm Guest

    The following seems like a simple enough operation, but for some
    reason I can't figure it out.

    In a parent-child relationship I want to move a child to a different
    parent. I figured that it would be as easy as
    "Parent.ChildCollection.Attach(ChildToTransfer)" but it doesn't work.
    All of the entities are attached to the same object context and
    already exist in the database. No inserting here, just updating.

    At the time that ".SaveChanges()" is called on the container, the
    states of the various entities are thus:
    Parent.EntityState = Modified (Due to other code)
    Parent.ChildCollection contains the ChildToTransfer
    Child.Parent = The new Parent (correct)
    BUT Child.EntityState = Unchanged

    The parent gets updated, but the child record doesn't.

    Any help would be appreciated and thanks in advance.

    - Norm
     
    Norm, Jul 4, 2009
    #1
    1. Advertising

  2. Norm

    Mr. Arnold Guest

    "Norm" <> wrote in message
    news:...
    > The following seems like a simple enough operation, but for some
    > reason I can't figure it out.
    >
    > In a parent-child relationship I want to move a child to a different
    > parent. I figured that it would be as easy as
    > "Parent.ChildCollection.Attach(ChildToTransfer)" but it doesn't work.
    > All of the entities are attached to the same object context and
    > already exist in the database. No inserting here, just updating.
    >
    > At the time that ".SaveChanges()" is called on the container, the
    > states of the various entities are thus:
    > Parent.EntityState = Modified (Due to other code)
    > Parent.ChildCollection contains the ChildToTransfer
    > Child.Parent = The new Parent (correct)
    > BUT Child.EntityState = Unchanged
    >
    > The parent gets updated, but the child record doesn't.
    >
    > Any help would be appreciated and thanks in advance.
    >


    Well, I have over 40 entities on the EF model using a WCF Web service on the
    backend that has the BLL and the DAL behind the WCF Web service SOA
    solution, used by an ASP.NET UI front-end.

    I learned to remove the associations/relationships between entities on the
    model, keeping the constants on the SQL tables themselves.

    That way, I have complete control of the EF model, no surprises.



    __________ Information from ESET NOD32 Antivirus, version of virus signature database 4214 (20090703) __________

    The message was checked by ESET NOD32 Antivirus.

    http://www.eset.com
     
    Mr. Arnold, Jul 4, 2009
    #2
    1. Advertising

  3. Norm

    Norm Guest

    On Jul 3, 5:38 pm, "Mr. Arnold" <MR. > wrote:
    > "Norm" <> wrote in message
    >
    > news:...
    >
    >
    >
    >
    >
    > > The following seems like a simple enough operation, but for some
    > > reason I can't figure it out.

    >
    > > In a parent-child relationship I want to move a child to a different
    > > parent. I figured that it would be as easy as
    > > "Parent.ChildCollection.Attach(ChildToTransfer)" but it doesn't work.
    > > All of the entities are attached to the same object context and
    > > already exist in the database. No inserting here, just updating.

    >
    > > At the time that ".SaveChanges()" is called on the container, the
    > > states of the various entities are thus:
    > > Parent.EntityState = Modified (Due to other code)
    > > Parent.ChildCollection contains the ChildToTransfer
    > > Child.Parent = The new Parent (correct)
    > > BUT Child.EntityState = Unchanged

    >
    > > The parent gets updated, but the child record doesn't.

    >
    > > Any help would be appreciated and thanks in advance.

    >
    > Well, I have over 40 entities on the EF model using a WCF Web service on the
    > backend that has the BLL and the DAL behind the WCF Web service SOA
    > solution, used by an ASP.NET UI front-end.
    >
    > I learned to remove the associations/relationships between entities on the
    > model, keeping the constants on the SQL tables themselves.
    >
    > That way, I have complete control of the EF model, no surprises.
    >
    > __________ Information from ESET NOD32 Antivirus, version of virus signature database 4214 (20090703) __________
    >
    > The message was checked by ESET NOD32 Antivirus.
    >
    > http://www.eset.com- Hide quoted text -
    >
    > - Show quoted text -


    Mr. Arnold,

    While that is a valid answer, I am not in a posistion where I can redo
    the model in such a way. After running into this and seeing your
    answer (and the lack of anyone elses), I am inclined to not use EF in
    the future. However, I am still in need of a solution for my current
    project.

    - Norm
     
    Norm, Jul 6, 2009
    #3
  4. Norm

    Norm Guest

    On Jul 6, 10:32 am, Norm <> wrote:
    > On Jul 3, 5:38 pm, "Mr. Arnold" <MR. > wrote:
    >
    >
    >
    >
    >
    > > "Norm" <> wrote in message

    >
    > >news:....

    >
    > > > The following seems like a simple enough operation, but for some
    > > > reason I can't figure it out.

    >
    > > > In a parent-child relationship I want to move a child to a different
    > > > parent. I figured that it would be as easy as
    > > > "Parent.ChildCollection.Attach(ChildToTransfer)" but it doesn't work.
    > > > All of the entities are attached to the same object context and
    > > > already exist in the database. No inserting here, just updating.

    >
    > > > At the time that ".SaveChanges()" is called on the container, the
    > > > states of the various entities are thus:
    > > > Parent.EntityState = Modified (Due to other code)
    > > > Parent.ChildCollection contains the ChildToTransfer
    > > > Child.Parent = The new Parent (correct)
    > > > BUT Child.EntityState = Unchanged

    >
    > > > The parent gets updated, but the child record doesn't.

    >
    > > > Any help would be appreciated and thanks in advance.

    >
    > > Well, I have over 40 entities on the EF model using a WCF Web service on the
    > > backend that has the BLL and the DAL behind the WCF Web service SOA
    > > solution, used by an ASP.NET UI front-end.

    >
    > > I learned to remove the associations/relationships between entities on the
    > > model, keeping the constants on the SQL tables themselves.

    >
    > > That way, I have complete control of the EF model, no surprises.

    >
    > > __________ Information from ESET NOD32 Antivirus, version of virus signature database 4214 (20090703) __________

    >
    > > The message was checked by ESET NOD32 Antivirus.

    >
    > >http://www.eset.com-Hide quoted text -

    >
    > > - Show quoted text -

    >
    > Mr. Arnold,
    >
    > While that is a valid answer, I am not in a posistion where I can redo
    > the model in such a way.  After running into this and seeing your
    > answer (and the lack of anyone elses), I am inclined to not use EF in
    > the future. However, I am still in need of a solution for my current
    > project.
    >
    > - Norm- Hide quoted text -
    >
    > - Show quoted text -


    I have found the problem. It (of course) had nothing to do with the
    Entity Framework.
    /sigh

    Note: "Parent.ChildCollection.Attach(ChildToTransfer)" is not correct.
    Use "ChildToTransfer.Parent = NewParent"

    - Norm
     
    Norm, Jul 6, 2009
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. davout
    Replies:
    0
    Views:
    574
    davout
    Apr 18, 2004
  2. Jeff Rodriguez
    Replies:
    23
    Views:
    1,203
    David Schwartz
    Dec 9, 2003
  3. markla
    Replies:
    1
    Views:
    581
    Steven Cheng
    Oct 6, 2008
  4. Noel Dolan
    Replies:
    0
    Views:
    275
    Noel Dolan
    Jul 18, 2004
  5. Bitswapper
    Replies:
    5
    Views:
    183
    Prasad, Ramit
    Aug 27, 2013
Loading...

Share This Page