Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementThe INSERT statement conflicted with the FOREIGN KEY constraintThe INSERT statement conflicted with the FOREIGN KEY constraint
Précédente
 
Suivante
Nouveau message
04/06/2009 01:29
 

Bonjour,
Pouvez vous me dire que signifie cette erreur et comment pourrai je la corriger svp??
Citation:
A critical error has occurred.
The INSERT statement conflicted with the FOREIGN KEY constraint "FK__aspnet_Me__UserI__4F67C174". The conflict occurred in database "D:\INETPUB\DOSSIER DE SAUVEGARDE\VERSION SAUVGARDE 2\PROJET_ALIAS\APP_DATA\DATABASE.MDF", table "dbo.aspnet_Users", column 'UserId'. The statement has been terminated.
Je developpe en fait sous DotnetNuke et pour un besoin de creation d'un nouveau module d'enregistrement j'ai crée deux dataset : 1 pour ma base specifique et l'autre pour le bd dnn database et j'essaie d'inserer mes utilisateurs dans mes 2 bases de données.
Pour mon code
Code :
 protected void Button1_Click(object sender, EventArgs e)
    {
        ds_test ds_dnn = new ds_test();
        ds_test.aspnet_UsersRow aspuser = ds_dnn.aspnet_Users.Newaspnet_UsersRow();
        ds_test.aspnet_ApplicationsRow apli=ds_dnn.aspnet_Applications.Newaspnet_ApplicationsRow();
       ds_test.UsersRow u = ds_dnn.Users.NewUsersRow();
       ds_test.aspnet_MembershipRow asp = ds_dnn.aspnet_Membership.Newaspnet_MembershipRow();
    ds_enregistrement_candidat ds = new ds_enregistrement_candidat();
    ds_enregistrement_candidat.CandidatRow r = ds.Candidat.NewCandidatRow();
    ds_enregistrement_candidat.SituationActuelleRow s = ds.SituationActuelle.NewSituationActuelleRow();
    ds_enregistrement_candidat.FormationRow f = ds.Formation.NewFormationRow();
    ds_enregistrement_candidat.formationCandidatRow fc = ds.formationCandidat.NewformationCandidatRow(); 
    ds_enregistrement_candidat.ExperienceRow ex = ds.Experience.NewExperienceRow();
   u.Username = txt_email.Text;
   u.LastName = txt_nom.Text;
   u.IsSuperUser = false;
   u.Email = txt_email.Text;
   u.DisplayName = txt_prenom.Text;
   u.FirstName = txt_prenom.Text;
   u.UpdatePassword = false;
   asp.Email = txt_email.Text;
   asp.Password = mdp1.Text; 
        asp.PasswordFormat = 2;
        asp.PasswordSalt = mdp2.Text;
        asp.IsApproved=true;
        asp.IsLockedOut = false;
        asp.CreateDate = DateTime.Now;
        asp.LastLoginDate = DateTime.Now;
        asp.LastLockoutDate = DateTime.Now;
        asp.LastPasswordChangedDate = DateTime.Now;
        asp.FailedPasswordAnswerAttemptCount=0;
        asp.FailedPasswordAttemptWindowStart = DateTime.Now;
        asp.FailedPasswordAnswerAttemptCount =0;
        asp.FailedPasswordAnswerAttemptWindowStart = DateTime.Now;
        string monGuidStr ="5fa67d63-e30f-4b1e-b7eb-e9a204eba969";
        Guid g = new Guid(monGuidStr);
        asp.ApplicationId = g;
        
       int idc = r.idcandidat;
      
       Guid id = Guid.NewGuid();
       asp.UserId = id;
       //aspuser.UserId = asp.UserId;
        int ids;
        ids = s.idSituation;
        int idf = f.idFormation;
        fc.idFormation = idf;
        fc.idcandidat = idc;
        r.nom = txt_nom.Text;
        r.prenom = txt_prenom.Text;
        r.ville = txt_ville.Text;
      
        r.emailLogin = txt_email.Text;
        r.mdp = mdp1.Text;
        r._date = txt_date.Text;
 
        r.idSituation = ids;
 
        ds.Candidat.AddCandidatRow(r);
       ds_enregistrement_candidatTableAdapters.CandidatTableAdapter ta = new ds_enregistrement_candidatTableAdapters.CandidatTableAdapter();
        ta.Update(ds.Candidat);
 
        ds_dnn.Users.AddUsersRow(u);
        ds_testTableAdapters.UsersTableAdapter tu = new ds_testTableAdapters.UsersTableAdapter();
        tu.Update(ds_dnn.Users);
 
        ds_dnn.aspnet_Membership.Addaspnet_MembershipRow(asp);
        ds_testTableAdapters.aspnet_MembershipTableAdapter tasp = new ds_testTableAdapters.aspnet_MembershipTableAdapter();
        tasp.Update(ds_dnn.aspnet_Membership);
    }
 
Si vous pouvez m'aider n'hesitez pas j'en ai vraiment besoin.
Merci
 

 
Nouveau message
05/06/2009 11:39
 

Bonjour,

Le modèle de persistence des utilisateurs dans Dnn est hybride pour le moment, s'appuyant à la fois sur le modèle .Net et sur un modèle propriétaire. Donc soit vous utilisez les requêtes SQL Dnn, soit vous utilisez les méthodes Dnn de bas niveau telles qu'elles se trouvent dans l'espace de noms DotNetNuke.Entities.Users. Etant donné que vous héritez de PortalModuleBase, je vous conseille d'utiliser les méthodes Dnn directement, et au besoin, analysez les ;)

seb

 
Nouveau message
05/06/2009 12:47
 

Bonjour,

Merci Seb pour votre réponse. Pouvez m'expliquez un peu plus comment je pourrai faire pour travailler directement sur les méthodes Dnn bas niveau? Déjà je n'arrive pas à localiser leur emplacement , ou se trouve le namespace DotNetNuke.Entities.Users?

Je vous prie de me répondre.

 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementThe INSERT statement conflicted with the FOREIGN KEY constraintThe INSERT statement conflicted with the FOREIGN KEY constraint