ef core insert list of entity with navigation property

0

I have Model.

public class Lessee
    {
        public long Id { get; set; }

        public string LesseeName { get; set; }

        public bool? LogicalDeleteIn { get; set; }
    }

and another model with a navigation property to the first.

  public class RevenueReceived
    {
        public long Id { get; set; }

        ...

        public Lessee Lessee { get; set; }

    }

I then populate a list of Lessees and insert and that works fine.

   public List<Lessee> InsertLessees(List<Lessee> lessees)
        {
            using (var ctx = new DataContext())
            {
                ctx.Lessees.AddRange(lessees);
                ctx.SaveChanges();
                return lessees;
            }
        }

I then create a list of RevenueReceived and add the corresponding Lessee.

public List<RevenueReceived> GetRevenueReceived(List<Lessee> lessees)
        {
            List<RevenueReceived> retval = new List<RevenueReceived>();
            using (OleDbConnection con = new OleDbConnection(accessConnectionString))
            using (OleDbCommand Command = new OleDbCommand(" SELECT * from tblRevenueReceived", con))
            {
                con.Open();
                OleDbDataReader DB_Reader = Command.ExecuteReader();
                while (DB_Reader.Read())
                {
                    string lesseeName = DB_Reader.IsDBNull(DB_Reader.GetOrdinal("Company")) ? null : DB_Reader.GetString(DB_Reader.GetOrdinal("Company"));

                        retval.Add(new RevenueReceived
                    {
                        Id = 0,
                        ...
                        Lessee = string.IsNullOrEmpty(lesseeName) ? null :  lessees.FirstOrDefault(x => x.LesseeName == lesseeName)
                    }); 
                }
            }
            return retval;
        }

and finally I try and save the list of revenue received.

public void InsertRevenuesReceived(List<RevenueReceived> revenuesReceived)
        {
            using (var ctx = new DataContext())
            {
                ctx.RevenueReceived.AddRange(revenuesReceived);
                ctx.SaveChanges();
            }
        }

and I am receiving the error below. I am a bit confused why it is trying to insert into the lessees table again. is there a way to get to just insert the primary key but not have it try to insert back into lessees again?

Microsoft.EntityFrameworkCore.DbUpdateException HResult=0x80131500
Message=An error occurred while updating the entries. See the inner exception for details.
Source=Microsoft.EntityFrameworkCore.Relational StackTrace: at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(DbContext _, ValueTuple2 parameters) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(IEnumerable1 commandBatches, IRelationalConnection connection) at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChanges(IList1 entries) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IList1 entriesToSave) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess) at Microsoft.EntityFrameworkCore.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess) at Microsoft.EntityFrameworkCore.DbContext.SaveChanges() at accessdataimport.DataImportService.InsertRevenuesReceived(List`1 revenuesReceived) in C:\Users\c-bdelling\source\repos\Minerals\accessdataimport\DataImportService.cs:line 100 at accessdataimport.Program.Main(String[] args) in C:\Users\c-bdelling\source\repos\Minerals\accessdataimport\Program.cs:line 29

Inner Exception 1: SqlException: Cannot insert explicit value for identity column in table 'Lessees' when IDENTITY_INSERT is set to OFF.

c#
entity-framework
entity-framework-core
asked on Stack Overflow Nov 13, 2019 by Bryan Dellinger

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0