EF 4.1参照完整性错误 [英] EF 4.1 Referential integrity error

查看:144
本文介绍了EF 4.1参照完整性错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下类:

 公共类Person
{
    [键]
    公众的Guid标识{获取;组; }

    [需要]
    公共字符串名字{获得;组; }

    [需要]
    公共字符串名字{获得;组; }

    [需要]
    公共字符串电子邮件{获得;组; }

    公共虚拟调查调查{获得;组; }
}

公共类调查
{
    [键]
    公众的Guid标识{获取;组; }

    公共BOOL IsFinished {获得;组; }

    公共虚拟的ICollection< UserAnswer> UserAnswers {获得;组; }

    公共虚拟人人{获得;组; }
}

公共类UserAnswer
{
    [键]
    公众的Guid标识{获取;组; }

    公众的Guid SurveyId {获得;组; }
    公共虚拟调查调查{获得;组; }

    公众的Guid QuestionId {获得;组; }
    公共虚拟问题问题{获得;组; }

    公众的Guid AnswerId {获得;组; }
    公共虚拟答案来回答{获得;组; }
 }
 

在我的DataContext我已经定义:

  modelBuilder.Entity<勘察GT;()HasRequired(S => s.Person)。.WithOptional();
 modelBuilder.Entity<勘察GT;()的hasMany(S => s.UserAnswers)。.WithRequired(A => a.Survey).HasForeignKey(A => a.SurveyId).WillCascadeOnDelete(假);
 

谁能告诉我什么,我做错了什么?

更新:

当我执行此code:

  VAR surveyRepository =新SurveyRepository();
的foreach(在userAnswers VAR userAnswer)
{
    survey.UserAnswers.Add(userAnswer);
}
surveyRepository.InsertOrUpdate(调查);
surveyRepository.Save();
 

我收到以下错误:

  

一个参照完整性约束   侵权行为发生:酒店   定义参考价值   制约不是之间是一致的   在校长和相关对象   关系。

解决方案

请,请尝试以下方法

  VAR surveyRepository =新SurveyRepository();
 的foreach(在userAnswers VAR userAnswer)
 {
     ** userAnswer.SurveyId = Survey.Id **
     survey.UserAnswers.Add(userAnswer);
 }
 surveyRepository.InsertOrUpdate(调查);
 surveyRepository.Save();
 

I have the following classes:

public class Person
{
    [Key]
    public Guid Id { get; set; }

    [Required]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    [Required]
    public string Email { get; set; }

    public virtual Survey Survey { get; set; }
}

public class Survey
{
    [Key]
    public Guid Id { get; set; }

    public bool IsFinished { get; set; }

    public virtual ICollection<UserAnswer> UserAnswers { get; set; }

    public virtual Person Person { get; set; }
}

public class UserAnswer
{
    [Key]
    public Guid Id { get; set; }

    public Guid SurveyId { get; set; }
    public virtual Survey Survey { get; set; }

    public Guid QuestionId { get; set; }
    public virtual Question Question { get; set; }

    public Guid AnswerId { get; set; }
    public virtual Answer Answer { get; set; }
 }

In my datacontext I have defined:

 modelBuilder.Entity<Survey>().HasRequired(s => s.Person).WithOptional();
 modelBuilder.Entity<Survey>().HasMany(s => s.UserAnswers).WithRequired(a => a.Survey).HasForeignKey(a => a.SurveyId).WillCascadeOnDelete(false);

Can someone tell me what I am doing wrong ?

Update:

When I execute this code:

var surveyRepository = new SurveyRepository();
foreach (var userAnswer in userAnswers)
{
    survey.UserAnswers.Add(userAnswer);
}
surveyRepository.InsertOrUpdate(survey);
surveyRepository.Save();

I get the following error:

A referential integrity constraint violation occurred: The property values that define the referential constraints are not consistent between principal and dependent objects in the relationship.

解决方案

Please, try this way

 var surveyRepository = new SurveyRepository();
 foreach (var userAnswer in userAnswers)
 {
     **userAnswer.SurveyId = Survey.Id;**
     survey.UserAnswers.Add(userAnswer);
 }
 surveyRepository.InsertOrUpdate(survey);
 surveyRepository.Save();

这篇关于EF 4.1参照完整性错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆