我首先在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");
}
}
我不知道这是否相关。
如果您需要其他帮助,请告诉我。
提前感谢您的帮助。