سؤال

هذا هو الاستثناء الداخلي:

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

لدي ثلاثة جداول (مجلد ، مهمة ، دورة). يحتوي جدول المهمة على مفتاح أساسي يسمى ignemplingid ومفتاحًا خارجيًا يسمى CourseId الذي تم تعيين خاصية "السماح" بممتلكات Nulls على True. لذلك هذا الاستثناء يمنعني من الاتصال بـ _entities.savechanges () ؛ وبالتالي تنبثق من إضافة البيانات إلى قاعدة البيانات.


تحديث: بفضل مارك ، تم حل هذه المشكلة ، ولكن نشأت أخرى:

 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: 
هل كانت مفيدة؟

المحلول

أول شيء أود أن أتحقق منه هو الرابطة OrganizerDBEntities.Assignments في النموذج المفاهيمي EF الخاص بك. هل يسمح بالعلاقات 0: n؟ من رسالة الخطأ ، أنا أؤدي إلى تصديق أنها لا. يمكنك تعديل Cardinality (القيم الممكنة Min و Max) في نموذج EF الخاص بك.

إذا قمت بتحديد ارتباط بين كيانين في سطح مصمم EDMX الخاص بك ، فإن نافذة الخصائص تعرض طرفي الارتباط. في كل من خصائص "النهاية" هذه ، هناك قيم "تعدد" تحدد Cardinality للجمعية: 0:*, 0..1:*, 1:* وهكذا دواليك.

إذا كنت ترغب في السماح بقيمة مفقودة ، فإن التعددية في الطرف الطفل من جمعيتك يجب أن تكون 0..1 (صفر أو واحد) - هل هو حقا 0..1 (صفر أو واحد)؟ أم أنه تم ضبطه على 1 بدلاً من ذلك؟

نصائح أخرى

هنا 2 سنت.
أنا فقط أتجنب تعيين قيم المفاتيح الخارجية على NULL.SO بدلاً من تعيين الدورة التدريبية كمفتاح خارجي في جدول التعيين ، قم بتعيين TINDINGEDED كمفتاح خارجي في جدول الدورة التدريبية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top