Bug #55440 .NET FormView Update with DataSet generated --
Submitted: 21 Jul 2010 12:54 Modified: 21 Jul 2010 18:44
Reporter: Louis B Email Updates:
Status: Not a Bug Impact on me:
None 
Category:Connector / NET Severity:S1 (Critical)
Version:Connector .NET Beta 6.3.2 OS:Windows (Seven - VS 2010 )
Assigned to: Vladislav Vaintroub CPU Architecture:Any
Tags: .net, dataset, UPDATE, VS 2010

[21 Jul 2010 12:54] Louis B
Description:
Very simple application. I create a DataSet with the designer. It contain 1 table.

I create a page with a FormView. DataSource link to my table. Update commande linked on defaut Update of DataAdapter.

FormWiev appear => OK
I click on update => EditTemplate appear => OK
I don't change anything an I click on Update => Error, considerate the first original field text (varchar(150)) as null

Hope you can help me.

Thank

Louis

Error when I try to update  :

Erreur du serveur dans l'application '/'.
--------------------------------------------------------------------------------

La valeur ne peut pas être null.
Nom du paramètre : Original_VILLE 
Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. 

Détails de l'exception: System.ArgumentNullException: La valeur ne peut pas être null.
Nom du paramètre : Original_VILLE

Erreur source: 

Ligne 4351 :            this.Adapter.UpdateCommand.Parameters[19].Value = ((short)(Original_CAPACITE));
Ligne 4352 :            if ((Original_VILLE == null)) {
Ligne 4353 :                throw new global::System.ArgumentNullException("Original_VILLE");
Ligne 4354 :            }
Ligne 4355 :            else {
 

Fichier source : E:\Dev\Projets\abritel\abritel_ws_fb_bp\abritel_fb_bp_api\DsFbBp.Designer.cs    Ligne : 4353 

Trace de la pile: 

[ArgumentNullException: La valeur ne peut pas être null.
Nom du paramètre : Original_VILLE]
   abritel_fb_bp_api.DsFbBpTableAdapters.locationTableAdapter.Update(Int32 ID_ABRITEL, Int32 CLIENT_ID, Int16 CAPACITE, String VILLE, String TYPE, Byte DECISION, String STATUT, String NATURE, String IMAGE, String LIEN, String DESCRIPTION, DateTime DATE_PUBLICATION_DEBUT, Nullable`1 DATE_PUBLICATION_FIN, DateTime DATE_CREATION, DateTime DATE_DERNIERE_MODIFICATION, String PERIODE, Int32 Original_ID, Int32 Original_ID_ABRITEL, Int32 Original_CLIENT_ID, Int16 Original_CAPACITE, String Original_VILLE, String Original_TYPE, Byte Original_DECISION, String Original_STATUT, String Original_NATURE, String Original_IMAGE, String Original_LIEN, String Original_DESCRIPTION, DateTime Original_DATE_PUBLICATION_DEBUT, Nullable`1 Original_DATE_PUBLICATION_FIN, DateTime Original_DATE_CREATION, DateTime Original_DATE_DERNIERE_MODIFICATION, String Original_PERIODE) in E:\Dev\Projets\abritel\abritel_ws_fb_bp\abritel_fb_bp_api\DsFbBp.Designer.cs:4353

[TargetInvocationException: Une exception a été levée par la cible d'un appel.]
   System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) +0
   System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) +72
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +251
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +28
   System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance) +486
   System.Web.UI.WebControls.ObjectDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +2679
   System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +95
   System.Web.UI.WebControls.FormView.HandleUpdate(String commandArg, Boolean causesValidation) +1154
   System.Web.UI.WebControls.FormView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +408
   System.Web.UI.WebControls.FormView.OnBubbleEvent(Object source, EventArgs e) +95
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
   System.Web.UI.WebControls.FormViewRow.OnBubbleEvent(Object source, EventArgs e) +112
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +125
   System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +169
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +9
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +176
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

 

--------------------------------------------------------------------------------
Informations sur la version : Version Microsoft .NET Framework :4.0.30319; Version ASP.NET :4.0.30319.1 
 
 

How to repeat:
Create FormView juste with designer and one table.

Here is mine :

CREATE TABLE IF NOT EXISTS `location` (
  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Identifiant interne de l''application',
  `ID_EXT` int(11) NOT NULL COMMENT 'Numéro unique de l''annonce propre à EXT. ',
  `CLIENT_ID` int(11) NOT NULL COMMENT 'Identifiant du client qui propose le bon plan',
  `CAPACITE` smallint(6) NOT NULL COMMENT 'Capacité d''accueille',
  `VILLE` varchar(150) NOT NULL COMMENT 'Ville / destination où se trouve le bien',
  `TYPE` enum('Appartement','Maison') NOT NULL COMMENT 'Définit le type de bien (appartement, maison, etc…)',
  `DECISION` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0 si jamais "vu", 1 si accepté, 2 si refusé',
  `STATUT` enum('Nouveau','En ligne','Bientôt publié','Déjà publié','Refusé') NOT NULL COMMENT 'Statut de l''annonce',
  `NATURE` enum('Cadeau','Réductions','Services offerts','Nuits gratuites') DEFAULT NULL COMMENT 'Définit la nature du bon plan (cadeau, réduction, etc...)',
  `IMAGE` varchar(255) NOT NULL COMMENT 'Lien http vers l''image du bien',
  `LIEN` varchar(255) NOT NULL COMMENT 'Lien vers le produit sur le site ',
  `DESCRIPTION` varchar(2000) NOT NULL COMMENT 'Description "courte" du bien',
  `DATE_PUBLICATION_DEBUT` date NOT NULL COMMENT 'Date de publication sur Facebook',
  `DATE_PUBLICATION_FIN` date DEFAULT NULL COMMENT 'Date de fin de publication. Si non présente, on prend la date de début que x jours / semaine (à définir)',
  `DATE_CREATION` datetime NOT NULL COMMENT 'Date de création de l''annonce automatiquement mise par le système',
  `DATE_DERNIERE_MODIFICATION` datetime NOT NULL COMMENT 'Dernière date de modification automatiquement mise par le système',
  `PERIODE` varchar(1000) NOT NULL COMMENT 'Période(s) pendant le bien est louable',
  PRIMARY KEY (`ID`),
  UNIQUE KEY `ID_EXT` (`ID_EXT`),
  KEY `CLIENT_ID` (`CLIENT_ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED AUTO_INCREMENT=6 ;

--
-- Contenu de la table `location`
--
[21 Jul 2010 12:56] Louis B
It is implicit but I forget to write it is a web application
[21 Jul 2010 18:44] Vladislav Vaintroub
The exception is in generated code, and we do not have much with code generator.
Though, I noticed that VILLE in your table is declared as NOT NULL, and perhaps it is so that code generator helpfully checks for it before you even send INSERT  to MySQL server. The only thing I can suggest would be to catch exceptions and present them to user, or validate the form on button click input before dataset is updated.