[英]Foreign key exception on INSERT with Linq-to-SQL but can't figure out why?
INSERT语句与FOREIGN KEY约束“ FK_JobList_aspnet_Membership”冲突。 数据库“ C:\\ JOBPOST \\ APP_DATA \\ ASPNETDB.MDF”的表“ dbo.aspnet_Membership”的“ UserId”列中发生冲突。该语句已终止。
我的FK_JobList_aspnet_Membership设置是:
aspnet_membership
) JobList
) UserId(uniqueidentifier)
,当前仅设置2个UserId JobList
具有自动索引的主键int JobId
。 对插入和更新属性无操作,将删除设置为级联
在dbml中,我还为JobList
表设置了UpdateCheck=UpdateCheck.Never
我不明白为什么会发生异常,因为我在用户登录后使用了会员服务。 它应该没有冲突。 顺便说一句,我确定插入项目没有其他重复功能。 尽管抛出异常,但是新行数据已使用正确的userId成功插入。 每次插入Item时,都会不断抛出这种异常。
protected void LinqDataSourceDetail_Inserting(object sender, LinqDataSourceInsertEventArgs e)
{
if (Page.IsValid == true)
{
JobPostDataContext db = new JobPostDataContext();
JobList newJob = new JobList();
newJob.JobTitle = ((TextBox)DetailsView1.FindControl("TB_JobTitle")).Text;
newJob.Summary = ((TextBox)DetailsView1.FindControl("TB_Summary")).Text;
newJob.Detail = ((TextBox)DetailsView1.FindControl("TB_Detail")).Text;
newJob.CompanyName = ((TextBox)DetailsView1.FindControl("TB_CompanyName")).Text;
newJob.CompanyEmail = ((TextBox)DetailsView1.FindControl("TB_CompanyEmail")).Text;
String date = ((TextBox)DetailsView1.FindControl("TB_PostDate")).Text;
newJob.PostDate = (DateTime)Convert.ToDateTime(date);
newJob.IsTop = false;
newJob.UserId = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;
db.JobLists.InsertOnSubmit(newJob);
db.SubmitChanges();
}
}
这意味着(Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey
返回的(Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey
不会出现在aspnet_membership
表中。
这可能是因为Membership.GetUser(User.Identity.Name)
未找到当前用户。 反过来这可能是因为User.Identity.Name
也不在aspnet_membership
表中。
建议的分辨率:
throw new Exception(User.Identity.Name)
当您不可避免地发现它不是时,可以从那里继续进行调试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.