none
Cannot insert explicit value for identity column

    Frage

  • Hallo Zusammen,

    ich habe eine SQL Datenbank in Azure.

    In die Datenbank versuche ich Daten zu schreiben. Dazu benutze ich einen WCF-Service.

    In meiner Asynchronen client-Methode zum Einfügen der Daten übergebe ich dann ein Entity-Objekt. Alle meine Tabellen nehmen die Daten problemlos an.

    Bis auf zwei Tabellen, die mit der Fehlermeldung:

    Cannot insert explicit value for identity column in table ‘tblTestTable’ when IDENTITY_INSERT is set to OFF

    verweigern!

    Ich bin ratlos, da eigentlich nichts anders ist als bei den anderen Tabellen.

    Ich wüsste auch nicht, dass ich versuchen würde in die ID-Spalte einen Wert einzufügen.

    Kennt jemand das Problem?


    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)


    • Bearbeitet Peter Sypek Mittwoch, 13. Februar 2013 17:54
    Mittwoch, 13. Februar 2013 17:53

Antworten

  • Weiss dein Entity-Modell, dass ID in diesen Fällen eine Identity ist? Ggf. musst diese nur aktualisieren..
    • Als Antwort markiert Peter Sypek Samstag, 16. Februar 2013 18:30
    Freitag, 15. Februar 2013 12:59

Alle Antworten

  • Entweder haben die anderen Tabellen keine IDENTITY-Eigenschaft oder WCF-Service versucht hier tatsächlich einen Wert einzufügen.. Wie sieht der Service und die Tabellen aus?
    Mittwoch, 13. Februar 2013 18:05
  • Also hier mal der Service Contract

     [OperationContract]
            string AddNewSingleDaySubject ( tbl_SingleDays newSingleDay );


    Dann natürlich der Servercode

    /// <summary>
            /// Adds a new tbl_Single day object 
            /// </summary>
            /// <param name="newTime">tbl_SingleDay object to add</param> 
            /// <returns>Success! / Failure</returns>
            public string AddNewSingleDaySubject ( tbl_SingleDays newSingleDay )
                {
                try
                    {
                    using ( SchoolmanagerEntityDataContext context = new SchoolmanagerEntityDataContext ( ) )
                        {                   
                        tbl_SingleDays m = new tbl_SingleDays
                        {
                            AppID_FK = newSingleDay.AppID_FK,
                            IsEvenWeek = newSingleDay.IsEvenWeek,
                            IsEveryWeek = newSingleDay.IsEveryWeek,
                            Day = newSingleDay.Day,
                            FK_TimeID = newSingleDay.TimeID_FK,
                            FK_SubjectID = newSingleDay.FK_SubjectID,
                            TileImagePath = newSingleDay.TileImagePath
                        };
    
                        context.tbl_SingleDays.InsertOnSubmit ( m );
                        context.SubmitChanges ( );
    
                        return "Success!";
                        }
                    }
                catch ( Exception e )
                    {
                    return e.Message;
                    }
                }

    Mein Entity-Model

    Und die verursachende client Methode

     Service1Client client = new Service1Client ( );
    client.AddNewSingleDaySubjectCompleted+=( ( o, args ) =>
                                                   {
                                                       if ( args.Result == "Success!" )
                                                           {
                                                           MessageBox.Show ( AppResource.SaveSuccessMessage, AppResource.SaveSuccessTitle, MessageBoxButton.OK );
                                                           IsEvenWeek = false;
                                                           IsUnEvenWeek = false;
                                                           IsEveryWeek = false;
                                                           SelectedSubjectPicker = null;
                                                           }
                                                       else
                                                           {
                                                           MessageBox.Show ( args.Result, AppResource.SaveErrorTitle, MessageBoxButton.OK );
                                                           }
                                                       client.CloseAsync ( );
        
                                                   } );
                                                   tbl_SingleDays sd = new tbl_SingleDays
                                                   {
                                                       AppID_FK = App.AppID,
                                                       IsEvenWeek  = IsEvenWeek,
                                                       IsEveryWeek = IsEveryWeek,
                                                       Day = Items.ElementAt ( SelectedIndex ).PanoramaHeader,
                                                       FK_TimeID = TimeID,
                                                       FK_SubjectID = SelectedSubjectPicker.ID,
                                                       TileImagePath = path
                                                   };
                                                   client.AddNewSingleDaySubjectAsync ( sd );


    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)

    Donnerstag, 14. Februar 2013 11:48
  • Und hier die zweite Methode die den selben Fehler verursacht!

    Contract

     [OperationContract]
            string AddNewGeoData ( tbl_GeoData newGeoData, Guid AppID );

    ServerCode

     /// <summary>
            /// Adds new GeoData to Cloud DB
            /// </summary>
            /// <param name="newGeoData">Object of tbl_GeoData</param>
            /// <param name="AppID">Guid AppID</param>
            /// <returns>Success! / Failure</returns>
            public string AddNewGeoData ( tbl_GeoData newGeoData, Guid AppID )
                {
                try
                    {
                    using ( SchoolmanagerEntityDataContext context = new SchoolmanagerEntityDataContext ( ) )
                        {
                        context.tbl_GeoData.InsertOnSubmit ( newGeoData );
                        context.SubmitChanges ( );
                        return "Success!";
                        }
                    }
                catch ( Exception e )
                    {
                    return e.Message;
                    }
                }

    Client Code

     Service1Client client =  new Service1Client ( );
                                 client.AddNewGeoDataCompleted+=( ( o, args ) =>
                                 {
                                     if ( args.Result == "Success!" )
                                         {
                                         Debug.WriteLine ( "Save GeoData Success!" );
                                         }
                                     else
                                         {
                                         Debug.WriteLine ( "Save GeoDate Failure: " + args.Result.ToString ( ) );
                                         }
    
                                     NotifyComplete ( );
                                     client.CloseAsync ( );
                                 } );
                                 client.AddNewGeoDataAsync ( newCloudGeoData, appId );

    Entity

    Und so schauts in der SQL-Tabelle aus!


    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)



    • Bearbeitet Peter Sypek Donnerstag, 14. Februar 2013 12:27
    Donnerstag, 14. Februar 2013 12:10
  • Weiss dein Entity-Modell, dass ID in diesen Fällen eine Identity ist? Ggf. musst diese nur aktualisieren..
    • Als Antwort markiert Peter Sypek Samstag, 16. Februar 2013 18:30
    Freitag, 15. Februar 2013 12:59
  • Weiss dein Entity-Modell, dass ID in diesen Fällen eine Identity ist? Ggf. musst diese nur aktualisieren..
    Das Eigenschaftsfenster zeigt mir bei der ID StoreGeneratedPattern => Identity an.

    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)

    Freitag, 15. Februar 2013 14:09
  • Was ich aber jetzt festgestellt habe!

    Das Problem tritt nur auf meinem "localhost" auf.

    Zusätzlich habe ich jetzt auch noch "no endpoint listening" Probleme, nachdem ich das EntityModel neu generiert habe.

    Service usw. wurde aktualisiert.

    Auf einer echten Instanz die ich grade deployed habe, tritt das Problem nicht auf.

    Ist aber zum coden kein Zustand!

    Da muss irgendetwas mit der localhost Einrichtung daneben sein!


    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)

    Freitag, 15. Februar 2013 14:54
  • Ist zwar lästig, dass es nur in der echten Instanz funktioniert und nicht auf dem localhost.

    Das Deployen dauert nämlich immer ewig!

    Aber Hauptsache es funktioniert!


    Gruß

    Peter

    Wer grob fahrlässige Rechtschreibfehler findet, darf diese behalten ;0)

    Samstag, 16. Februar 2013 18:32