2

这是内部异常:

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

我有三个表(文件夹、作业、课程)。Assignment 表有一个名为AssignmentId 的主键和一个名为CourseId 的外键,其'Allow 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: 
4

2 回答 2

5

我要检查的第一件事是OrganizerDBEntities.Assignments您的 EF 概念模型中的关联。它是否允许 0:n 关系?从错误消息中,我相信它没有。您可以调整 EF 模型中的基数(最小和最大可能值)。

如果您在 EDMX 设计器界面中选择两个实体之间的关联,则属性窗口会显示关联的两端。在每个“End”属性中,都有一个“Multiplicity”值,它定义了关联的基数:0:*0..1:*等等1:*

如果您确实希望允许缺失值,则关联的子端的多重性需要为 0..1(零或一) - 真的是 0..1(零或一)吗?还是改为设置为 1?

于 2010-01-31T16:38:34.687 回答
1

这是我的 2 美分。
我只是避免将外键值设置为 NULL。因此,不要将 CourseId 设置为 Assignment 表中的外键,而是将 AssignmentId 设置为 Course 表中的外键。

于 2010-01-31T18:02:40.373 回答