EF Cannot insert explicit value for identity column in table 'X' when IDENTITY_INSERT is set to OFF












1















I have to migrate data from one database to another. Keys should be preserved.
I'm using EF with an auto-generated .dbmx file. I've read many answers to similar problem and follow those suggestions: I do turn IDENTITY_INSERT ON exactly before inserting the entry; on the database diagram I changed the StoreGeneratedPattern to None on Id column (also tried to do the same with adding corresponding attribute to Id property).



Here is my code:



var myEntity = new MyTable
{
Id = 12345,
Name = "Lorem ipsum",
BrandId = brandId,
};

MyContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT MY_TABLE_NAME ON");
MyContext.MyTable.Add(myEntity);
await MyContext.SaveChangesAsync(); //getting error here


When do that in Management Studio, it works just fine. The problem appears only when using Entity Framework.



What is looking weird that I can see in SQL Server Profiler that INSERT_IDENTITY command is executed and insert SQL comes with Id column, but seems is not executed. When I copy paste this SQL query it works just fine.










share|improve this question





























    1















    I have to migrate data from one database to another. Keys should be preserved.
    I'm using EF with an auto-generated .dbmx file. I've read many answers to similar problem and follow those suggestions: I do turn IDENTITY_INSERT ON exactly before inserting the entry; on the database diagram I changed the StoreGeneratedPattern to None on Id column (also tried to do the same with adding corresponding attribute to Id property).



    Here is my code:



    var myEntity = new MyTable
    {
    Id = 12345,
    Name = "Lorem ipsum",
    BrandId = brandId,
    };

    MyContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT MY_TABLE_NAME ON");
    MyContext.MyTable.Add(myEntity);
    await MyContext.SaveChangesAsync(); //getting error here


    When do that in Management Studio, it works just fine. The problem appears only when using Entity Framework.



    What is looking weird that I can see in SQL Server Profiler that INSERT_IDENTITY command is executed and insert SQL comes with Id column, but seems is not executed. When I copy paste this SQL query it works just fine.










    share|improve this question



























      1












      1








      1








      I have to migrate data from one database to another. Keys should be preserved.
      I'm using EF with an auto-generated .dbmx file. I've read many answers to similar problem and follow those suggestions: I do turn IDENTITY_INSERT ON exactly before inserting the entry; on the database diagram I changed the StoreGeneratedPattern to None on Id column (also tried to do the same with adding corresponding attribute to Id property).



      Here is my code:



      var myEntity = new MyTable
      {
      Id = 12345,
      Name = "Lorem ipsum",
      BrandId = brandId,
      };

      MyContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT MY_TABLE_NAME ON");
      MyContext.MyTable.Add(myEntity);
      await MyContext.SaveChangesAsync(); //getting error here


      When do that in Management Studio, it works just fine. The problem appears only when using Entity Framework.



      What is looking weird that I can see in SQL Server Profiler that INSERT_IDENTITY command is executed and insert SQL comes with Id column, but seems is not executed. When I copy paste this SQL query it works just fine.










      share|improve this question
















      I have to migrate data from one database to another. Keys should be preserved.
      I'm using EF with an auto-generated .dbmx file. I've read many answers to similar problem and follow those suggestions: I do turn IDENTITY_INSERT ON exactly before inserting the entry; on the database diagram I changed the StoreGeneratedPattern to None on Id column (also tried to do the same with adding corresponding attribute to Id property).



      Here is my code:



      var myEntity = new MyTable
      {
      Id = 12345,
      Name = "Lorem ipsum",
      BrandId = brandId,
      };

      MyContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT MY_TABLE_NAME ON");
      MyContext.MyTable.Add(myEntity);
      await MyContext.SaveChangesAsync(); //getting error here


      When do that in Management Studio, it works just fine. The problem appears only when using Entity Framework.



      What is looking weird that I can see in SQL Server Profiler that INSERT_IDENTITY command is executed and insert SQL comes with Id column, but seems is not executed. When I copy paste this SQL query it works just fine.







      c# entity-framework ef-database-first identity-insert






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 25 '18 at 7:46









      marc_s

      578k12911161262




      578k12911161262










      asked Nov 25 '18 at 4:30









      mykhailovskyimykhailovskyi

      386217




      386217
























          1 Answer
          1






          active

          oldest

          votes


















          1














          The problem is that the EDMX is and Designer.cs files are generated before you compile, when you genrate the schema from the DB and do not change. The validation is run against those what is in those files. They expect the identify_insert property to be enabled, so when you programatically disable it in the DB, the EF layer throws the exception you encountered. Basically saying - your DB doesn't match what I have.



          Honestly, doing a large table data transfer this way is not what EF is designed for. You should use Bulk Data Copy






          share|improve this answer
























          • thanks for quick answer. That's partially true what you said. But I changed on EDMX diagram behavior for Id column.

            – mykhailovskyi
            Nov 25 '18 at 4:46











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53464656%2fef-cannot-insert-explicit-value-for-identity-column-in-table-x-when-identity-i%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          The problem is that the EDMX is and Designer.cs files are generated before you compile, when you genrate the schema from the DB and do not change. The validation is run against those what is in those files. They expect the identify_insert property to be enabled, so when you programatically disable it in the DB, the EF layer throws the exception you encountered. Basically saying - your DB doesn't match what I have.



          Honestly, doing a large table data transfer this way is not what EF is designed for. You should use Bulk Data Copy






          share|improve this answer
























          • thanks for quick answer. That's partially true what you said. But I changed on EDMX diagram behavior for Id column.

            – mykhailovskyi
            Nov 25 '18 at 4:46
















          1














          The problem is that the EDMX is and Designer.cs files are generated before you compile, when you genrate the schema from the DB and do not change. The validation is run against those what is in those files. They expect the identify_insert property to be enabled, so when you programatically disable it in the DB, the EF layer throws the exception you encountered. Basically saying - your DB doesn't match what I have.



          Honestly, doing a large table data transfer this way is not what EF is designed for. You should use Bulk Data Copy






          share|improve this answer
























          • thanks for quick answer. That's partially true what you said. But I changed on EDMX diagram behavior for Id column.

            – mykhailovskyi
            Nov 25 '18 at 4:46














          1












          1








          1







          The problem is that the EDMX is and Designer.cs files are generated before you compile, when you genrate the schema from the DB and do not change. The validation is run against those what is in those files. They expect the identify_insert property to be enabled, so when you programatically disable it in the DB, the EF layer throws the exception you encountered. Basically saying - your DB doesn't match what I have.



          Honestly, doing a large table data transfer this way is not what EF is designed for. You should use Bulk Data Copy






          share|improve this answer













          The problem is that the EDMX is and Designer.cs files are generated before you compile, when you genrate the schema from the DB and do not change. The validation is run against those what is in those files. They expect the identify_insert property to be enabled, so when you programatically disable it in the DB, the EF layer throws the exception you encountered. Basically saying - your DB doesn't match what I have.



          Honestly, doing a large table data transfer this way is not what EF is designed for. You should use Bulk Data Copy







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 25 '18 at 4:39









          MattMatt

          9,48853162269




          9,48853162269













          • thanks for quick answer. That's partially true what you said. But I changed on EDMX diagram behavior for Id column.

            – mykhailovskyi
            Nov 25 '18 at 4:46



















          • thanks for quick answer. That's partially true what you said. But I changed on EDMX diagram behavior for Id column.

            – mykhailovskyi
            Nov 25 '18 at 4:46

















          thanks for quick answer. That's partially true what you said. But I changed on EDMX diagram behavior for Id column.

          – mykhailovskyi
          Nov 25 '18 at 4:46





          thanks for quick answer. That's partially true what you said. But I changed on EDMX diagram behavior for Id column.

          – mykhailovskyi
          Nov 25 '18 at 4:46




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53464656%2fef-cannot-insert-explicit-value-for-identity-column-in-table-x-when-identity-i%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          404 Error Contact Form 7 ajax form submitting

          How to know if a Active Directory user can login interactively

          TypeError: fit_transform() missing 1 required positional argument: 'X'