2016-02-09 1 views
1

Я застрял в простом коде в asp.net Я хочу вставить простые строковые значения в 1 родительскую таблицу (учетные записи) и 1 таблицу для детей (Applicant_bio) , Теперь вот вещь, я могу поместить данные в родительской таблице, но когда я пытаюсь получить доступ к таблице ребенка, он дает мне следующую ошибку:Вставка данных в дочернюю таблицу с использованием Linq в sql (архитектура 3 уровня)

The INSERT statement conflicted with the FOREIGN KEY constraint linq to sql 

я явно задать значения обоих первичных ключей к так что конфликтов нет, поскольку таблицы имеют отношение 1 к 1. Вот мой код:

public string Retreive_Applicants(Applicant_list user_details) 
     { 
      newDatabaseDataContext connection = new newDatabaseDataContext(); 
      //Create a new instance of the applicant object 
      account account = new account(); 
      account.account_id = 1; 
      account.account_type = "Applicant"; 
      account.account_description = ""; 
      account.account_title = user_details.account_title; 
      account.account_password = user_details.account_password; 
      connection.accounts.InsertOnSubmit(account); 
      connection.SubmitChanges(); 



      account.applicant_bio= new applicant_bio(); 
      account.applicant_bio.account_id = account.account_id; //Here's Where I have explicitly set the account id of applicant_bio to account_id of accounts table just created 
      account.applicant_bio.applicant_name = user_details.applicant_name; 
      account.applicant_bio.applicant_age = user_details.applicant_age; 
      account.applicant_bio.applicant_cnic = user_details.applicant_cnic; 
      connection.applicant_bios.InsertOnSubmit(account.applicant_bio); 
      connection.SubmitChanges(); //Here's where the error occurs 
      return "success"; 
     } 

Вот база данных Детали enter image description here

+0

кажется, вы вставляете ключ в детской таблице, которая не находится в родительской таблице, попробуйте напечатать значения и увидеть – TheGameiswar

+0

@TheGameiswar имеет печать бо го значений объекта, и они вернули одинаковые значения, то есть account.account_id и account.applicant_bio.account_id возвращают те же значения –

+0

Это поможет, если вы также дали определение db обеих таблиц. –

ответ

1

ошибка происходит потому, что LINQ понимает, что с applicant_bio вы пытаетесь сохранить также новую учетную запись Objet, которая уже существует, попробуйте сохранить как это работает таким образом:

public string Retreive_Applicants(Applicant_list user_details) 
     { 
      newDatabaseDataContext connection = new newDatabaseDataContext(); 
      //Create a new instance of the applicant object 
      account account = new account(); 
      account.account_id = 1; 
      account.account_type = "Applicant"; 
      account.account_description = ""; 
      account.account_title = user_details.account_title; 
      account.account_password = user_details.account_password; 

      account.applicant_bio= new applicant_bio(); 
      //You dont need this line any more 
      //account.applicant_bio.account_id = account.account_id; 
      account.applicant_bio.applicant_name = user_details.applicant_name; 
      account.applicant_bio.applicant_age = user_details.applicant_age; 
      account.applicant_bio.applicant_cnic = user_details.applicant_cnic;   
      connection.accounts.InsertOnSubmit(account); 
      connection.SubmitChanges(); 
      return "success"; 
     } 
+0

Я сделал это, все еще не работает, я также хочу добавить, что я создал связь между 'account_id' в таблице' accounts' и 'invite_id' в таблице' invite_bio' (от 1 до 1). Я также попытался установить 'account_id' как первичный ключ обеих таблиц, но все же он дает мне ошибку внешнего ключа. Тем не менее, я могу успешно ввести данные, если я создаю отношения от 1 до многих между 'account_id' в таблице' account' (Parent) и 'account_id' в таблице' invite_bio' (Child) –