Оператор 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
.Никаких действий при вставке и обновлении атрибута. Удалите для параметра Cascade
. В dbml я также установил UpdateCheck=UpdateCheck.Never
для JobList
Таблица
Я не понимаю, почему возникает исключение, посколькуЯ использую сервис членства после входа пользователя.Это не должно иметь никакого конфликта.Кстати, я уверен, что нет другой дублирующей функции для вставки элемента.Несмотря на исключение, новые данные строки были успешно вставлены с правильным идентификатором пользователя.Каждый раз при вставке элемента он выдает такое исключение.
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();
}
}