EF 4.1参照完整性错误 [英] EF 4.1 Referential integrity error
本文介绍了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屋!
查看全文