locked
Entity Framework 6 one to many insert problem RRS feed

  • Question

  • User777726829 posted

    I am having an issue whenever I try to insert a one <g class="gr_ gr_106 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" id="106" data-gr-id="106">to</g> many <g class="gr_ gr_111 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" id="111" data-gr-id="111">relationship</g>. The record for the one table gets stored, however, nothing happens in the many <g class="gr_ gr_250 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" id="250" data-gr-id="250">table</g>. The relationship <g class="gr_ gr_470 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" id="470" data-gr-id="470">seem</g> to have been created successfully, as the foreign key (one table's primary key) is in the many <g class="gr_ gr_413 gr-alert gr_gramm gr_inline_cards gr_disable_anim_appear Grammar multiReplace" id="413" data-gr-id="413">table</g>.

    I welcome any suggestion, as this problem is setting me back.

    Thanks

    Wednesday, December 20, 2017 10:50 PM

Answers

All replies

  • User1120430333 posted

    http://www.c-sharpcorner.com/UploadFile/d87001/connected-and-disconnected-scenario-in-entity-framework/

    EF can be in one of two states. A Web application running on a Web server is stateless. Therefore  EF is being used in a Web application as a stateless solution. So, you must tell EF the entity's state when trying to persist it to the database.

    Thursday, December 21, 2017 1:41 AM
  • User777726829 posted

    Thanks for <g class="gr_ gr_12 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar multiReplace" id="12" data-gr-id="12">you</g> response. See code snippet below:

      public void SetAsAdded<TEntity>(TEntity entity) where TEntity : BaseEntity

            {

                UpdateEntityState(entity, EntityState.Added);

                

            }

     

     private void UpdateEntityState<TEntity>(TEntity entity, EntityState entityState) where TEntity : BaseEntity

            {

                var dbEntityEntry = GetDbEntityEntrySafely(entity);

                dbEntityEntry.State = entityState;

            }

            private DbEntityEntry GetDbEntityEntrySafely<TEntity>(TEntity entity) where TEntity : BaseEntity

            {

                var dbEntityEntry = Entry<TEntity>(entity);

                if (dbEntityEntry.State == EntityState.Detached)

                {

                    Set<TEntity>().Attach(entity);

                }

                return dbEntityEntry;

            }

    I did tell EF the state.

    Thursday, December 21, 2017 2:00 AM
  • User1120430333 posted

    http://www.entityframeworktutorial.net/EntityFramework5/add-entity-graph-using-dbcontext.aspx

    <copied>

    Add Entity Graph using DbContext:

    The following example adds a student entity graph in disconnected mode, using the DbSet.Add() method which marks the added state to all the entities:

    <end>

    One of the pages in the above link shows how to do it.

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Thursday, December 21, 2017 3:28 AM
  • User777726829 posted

    Thanks a mil DA924! That approach worked.

    Thursday, December 21, 2017 2:28 PM