Reputation: 1
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_JobList_aspnet_Membership". The conflict occurred in database "C:\JOBPOST\APP_DATA\ASPNETDB.MDF", table "dbo.aspnet_Membership", column 'UserId'.The statement has been terminated.
My FK_JobList_aspnet_Membership setup is:
aspnet_membership
) JobList
)UserId(uniqueidentifier)
for both tables, currently only set 2 UserIdJobList
has its auto indexable primary key int JobId
. No Action on Insert and update attribute, Delete set to Cascade
In the dbml, I also set UpdateCheck=UpdateCheck.Never
for JobList
Table
I don't understand why the exception happens, since I use membership service after user login. It should have no conflict. BTW, I am sure there is no other duplicate function for Inserting Item. Though throw exception, the new row data has been successfully inserted with correct userId. It keeps throwing this kind of exception for each time Inserting 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();
}
}
Upvotes: 0
Views: 1415
Reputation: 35613
It means that the guid returned by (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey
doesn't appear in the aspnet_membership
table.
This is probably because Membership.GetUser(User.Identity.Name)
is not finding the current user. In turn this is probably because User.Identity.Name
is not in the aspnet_membership
table either.
Suggested resolution:
throw new Exception(User.Identity.Name)
When you inevitably discover that it does not, you can continue your debugging from there.
Upvotes: -1