Bonjour à tous ,
Bon j'ai l'impression de tirer dans les coins vu que c'est le cas particulier d'un cas particulier mais j'ai l'impression d'être dans un mystère informatique
J'ai un projet a base de site web, de fichier EDMX pour mapper une base SQL et de "DynamicData pour webform" pour accéder a la base.
J'ai donc 2 parties a mon site, une partie pour les internautes et une partie qui me permet d'interagir avec la BDD (CRUD).
Il m'arrive un truc étrange quant j’insère une nouvelle entré a ma base.
L'ajout se fait de cette manière:
Initialement ça ne marchais pas (exeption). J'ai modifier sur ma base la propriété de la clé en mettant "StoreGeneratedPattern" à "Identity". ça ne fonctionnais toujours pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public partial class Default : System.Web.UI.Page { public void addStudentForm_InsertItem() { var item = new LesQuestion(); TryUpdateModel(item); if (ModelState.IsValid) { using (DiagEntities db = new DiagEntities()) { db.LesQuestions.Add(item); db.SaveChanges(); } } }
Je suis aller sur mon fichier EDMX et visiblement ce genre de modification n'est pas prise en compte lors de la mise à jour du mappage et j'ai donc ajouter cette modif manuellement (donc j'ai mis la clé primaire a Identity (qui était initialement à false) dans mon fichier EDMX .
Et la Tadaaa! ça marche, je peut inserer des lignes a ma table !!
Je test donc des ajout/suppression de ligne pour voir un peu les bug de ma page insertion qui est ici:
Bon la c'est moins sympas... Sur une page web précédente (page modifier/supprimer dans la table) quant je clic sur modifier, l'ID (clé primaire) n'est pas modifiable ce qui est normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <%@ Page Title="BDDAccessInsertLesQuestions" Language="C#" MasterPageFile="~/BDDAccess.Master" AutoEventWireup="true" CodeBehind="BDDAInsertLesQuestions.aspx.cs" Inherits="DiaDocV1.Default" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderBDDAccess" runat="server"> <asp:ValidationSummary runat="server" ShowModelStateErrors="true" /> <asp:FormView runat="server" ID="addStudentForm" ItemType="DiaDocV1.App_Data.LesQuestion" InsertMethod="addStudentForm_InsertItem" DefaultMode="Insert" RenderOuterTable="false" OnItemInserted="addStudentForm_ItemInserted"> <InsertItemTemplate> <fieldset> <ol> <asp:DynamicEntity runat="server" Mode="Insert" /> </ol> <asp:Button runat="server" Text="Insert" CommandName="Insert" /> <asp:Button runat="server" Text="Cancel" CausesValidation="false" OnClick="cancelButton_Click" /> </fieldset> </InsertItemTemplate> </asp:FormView> </asp:Content>
En revanche sur ma page "insertion" je peut insérer quelques choses dans tous les champs y compris le champ ID!
Du coup j'ai tester...
Quant je ne rentre rien dans le champs ID , il me dit "rentre quelque chose" donc je suis obligé d'inscrire un ID. Quant je met un ID déjà utiliser je valide et la ligne est générer avec le 1er ID libre disponible (ex: j'ai 12 lignes, il va me créer une ligne ID=13). Cool! l'auto incrémentation fonctionne!
Je vous expose à présent le soucis. Je me suis amusé a créer une ligne de n'importe quoi et à l'effacer ensuite. ça marche. J'en créer une nouvelle selon le même procéder qu'au dessus et alors mystérieusement il me créer un ID 14 alors que la ligne 13 n 'existe plus....???? je l'efface, je recommence l'insertion d'une ligne et je suis a présent à l'iD 15!! .
J'ai vérifier sur ma base SQL, ces lignes n'existe pas, dans la table lié aucun création non plus de ces ID, bref j'ai regarder partout ces lignes n'ont pas été sauvegarder et pourtant ces ID utiliser/effacer semble considérer comme inutilisable a jamais
Quelqu'un aurais une idée sur le moyen de réutiliser ces ID effacer ?
merci de votre aide!
Partager