Question

Voici l'exception interne:

InnerException: System.Data.UpdateException
Message=Entities in 'OrganizerDBEntities.Assignments' participate in 
the 'CourseId' relationship. 0 related 'Course' were found. 
1 'Course' is expected.`  

J'ai trois tables (dossier, affectation, cours). Le tableau d'affectation a une clé primaire appelée AssignmentId et une clé étrangère appelée courseid dont «Null autorisé de la propriété a été définie sur true. Donc, cette exception me empêche d'appeler _entities.SaveChanges (); et donc me peventing d'ajouter des données à la base de données.


MISE À JOUR: Merci à Marc, ce problème a été résolu, mais un autre a surgi:

 InnerException: System.Data.UpdateException
        Message=An error occurred while updating the entries. See the InnerException for details.
        Source=System.Data.Entity
        StackTrace:
             at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
             at System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
             at System.Data.Objects.ObjectContext.SaveChanges(Boolean acceptChangesDuringSave)
             at System.Data.Objects.ObjectContext.SaveChanges()
             at AssignmentOrganizer.App_Data.AssignmentRepository.CreateAssignment(Assignment assignmentToCreate) in C:\Users\Mohit\Documents\Visual Studio 2010\Projects\AssignmentOrganizer\AssignmentOrganizer\App_Data\AssignmentRepository.cs:line 19
             at AssignmentOrganizer.MainWindow..ctor() in C:\Users\Mohit\Documents\Visual Studio 2010\Projects\AssignmentOrganizer\AssignmentOrganizer\MainWindow.xaml.cs:line 54
        InnerException: System.Data.EntityCommandCompilationException
             Message=An error occurred while preparing the command definition. See the inner exception for details.
             Source=System.Data.Entity
             StackTrace:
                  at System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
                  at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator translator, Dictionary`2 identifierValues)
                  at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
                  at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
             InnerException: System.NotSupportedException
                  Message=Server-generated keys and server-generated values are not supported by SQL Server Compact.
                  Source=System.Data.SqlServerCe.Entity
                  StackTrace:
                       at System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateReturningSql(StringBuilder commandText, DbModificationCommandTree tree, ExpressionTranslator translator, DbExpression returning)
                       at System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateInsertSql(DbInsertCommandTree tree, List`1& parameters, Boolean isLocalProvider)
                       at System.Data.SqlServerCe.SqlGen.SqlGenerator.GenerateSql(DbCommandTree tree, List`1& parameters, CommandType& commandType, Boolean isLocalProvider)
                       at System.Data.SqlServerCe.SqlCeProviderServices.CreateCommand(DbProviderManifest providerManifest, DbCommandTree commandTree)
                       at System.Data.SqlServerCe.SqlCeProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree)
                       at System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
                       at System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree)
                       at System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)
                  InnerException: 
Était-ce utile?

La solution

La première chose que je voudrais vérifier est le OrganizerDBEntities.Assignments d'association dans votre modèle conceptuel EF. Est-il permettre 0: n relations? Du message d'erreur, je suis amené à croire qu'il ne fonctionne pas. Vous pouvez modifier la cardinalité (les valeurs min et max possibles) dans votre modèle EF.

Si vous sélectionnez une association entre deux entités dans votre surface de conception EDMX, la fenêtre des propriétés montre les deux extrémités de l'association. Dans chacune de ces propriétés « End », il y a une valeur « Multiplicity » qui définit la cardinalité de l'association:. 0:*, 0..1:*, 1:* et ainsi de suite

Si vous souhaitez autoriser une valeur manquante, la multiplicité à l'extrémité de l'enfant de votre association doit être 0..1 (zéro ou un) - est-ce vraiment 0..1 (zéro ou un)? Ou est-il réglé sur 1 au lieu?

Autres conseils

Voici mes 2 cents.
J'évite simplement définir des valeurs clés étrangères à NULL.So au lieu de définir courseid comme une clé étrangère dans le tableau d'affectation, définissez AssignmentId comme une clé étrangère dans une table de cours.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top