尝试使用GenericRepository的Delete方法,获得无效的操作异常

时间:2014-09-17 03:44:51

标签: c# entity-framework-4 repository-pattern

我首先在GenericRepository和Entity Framework代码上很弱。我正在维护一个由其他人编写的网站,所以有时候我只是在整块石头上捣乱。

我有以下代码:

        if (userQuizMarks != null)
        {
            foreach ( var userQuizMark in userQuizMarks)
            {
               _repository.Delete(userQuizMark);
            }
        }

删除失败并出现无效操作异常,实体类型Object不是当前上下文模型的一部分。

域对象是:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

[Serializable]
public class UserQuizMark : SponsorEntity
{   
    public virtual User User { get; set; }
    public virtual Certification Certification { get; set; }
    public virtual Quiz Quiz { get; set; }
    public virtual QuizQuestion QuizQuestion { get; set; }
    public short SelectedAnswer { get; set; }       
}

此代码大部分时间都有效。但在某些情况下,userQuizMarks中的对象将Certification列设置为null。这似乎与我得到的错误有关。

我可以使用SQL Management Studio删除数据库中的行,因此没有数据库约束导致问题。

必须有一些我需要修复的代码才能容纳null。我能想到的最后一件事就是映射:

public class UserQuizConfiguration : BaseConfiguration<UserQuiz>
{
    public UserQuizConfiguration()
    {
        HasRequired(m => m.User).WithMany().Map(n => n.MapKey("UserId"));
        HasOptional(m => m.Certification).WithMany().Map(n => n.MapKey("CertificationId"));
        HasRequired(m => m.Quiz).WithMany().Map(n => n.MapKey("QuizId"));

        ToTable("UserQuizzes", "dbo");
    }      
}

我不知道这是否相关。

如果您需要其他帮助,请告诉我。

提前感谢您的帮助。

0 个答案:

没有答案