Bonjour a tous!
J'ai un petit soucis que je n'arrive pas à comprendre avec ma couche d'accès aux données...
J'utilise Microsoft.ApplicationBlocks.Data (SQLHelper) afin d'appeler (entre autre) des procédure stockées SqlServer 2005.
Seulement j'ai cette Exception:
Je comprend tout à l'exception en elle même, mais je ne comprend ce qui peut bien la lever...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 [InvalidCastException: Object must implement IConvertible.] System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +2560525 System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType) +896 [InvalidCastException: Failed to convert parameter value from a SqlParameter to a Int32.] Data.DataProvider.ExecuteNonQuery(String procedureName, Object[] parameters) in E:\Projects\MMM.Developement\src\DataAccesLayer\DataProvider.cs:91 Data.Bases.ProviderBase.Insert(EntityBase item) in E:\Projects\MMM.Developement\src\DataAccesLayer\ProviderBase.cs:198 Data.Bases.EntityBase.Save() in E:\Projects\MMM.Developement\src\DataAccesLayer\EntityBase.cs:128 Data.Providers.UserHostAdressProvider.CreateIfNoExists(String ip) in E:\Projects\MMM.Developement\src\DataAccesLayer\Providers\UserHostAdressProvider.cs:20 Data.Entities.SessionTracker..ctor() in E:\Projects\MMM.Developement\src\DataAccesLayer\Entities\SessionTracker.cs:24 UnitTest.WebSite.Global.get_SessionTracker() in E:\Projects\MMM.Developement\src\UnitTest.WebSite\Global.asax.cs:25 UnitTest.WebSite.Global.Application_BeginRequest(Object sender, EventArgs e) in E:\Projects\MMM.Developement\src\UnitTest.WebSite\Global.asax.cs:45 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64
En effet j'ai la procédure stockée suivante:
Et lorsque que j'exécute ce code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE PROCEDURE [dbo].[G_Ref_Browser_Insert] @brw_id Int OUT , @brw_name NVarChar(255) = null , @brw_identity NVarChar(255) = null AS BEGIN INSERT INTO [dbo].[Ref_Browser] VALUES (@brw_name , @brw_identity ) SET @brw_id = SCOPE_IDENTITY() END
Je me retrouve avec les valeurs de [parameters] suivantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 foreach (KeyValuePair<Column, object> pair in m_columnsValues) { SqlParameter p = new SqlParameter(pair.Key.Name, pair.Key.Type); if (pair.Key.Identity) p.Direction = ParameterDirection.InputOutput; p.Value = (pair.Value != null)? pair.Value : DBNull.Value; parameters.Add(p); } SqlHelper.ExecuteNonQuery(m_connectionString, procedureName, parameters);
[0]: @brw_id = 0 (Int32)
[1]: @brw_name = "IE" (String)
[2]: @brw_identity = "ie6to9" (String)
Je ne comprend absolument pas d'où vient le soucis du coup... (à savoir que le même problème se pose si j'ai mon @brw_id_= DBNull.Value)
Si quelqu'un a déjà rencontrer ce soucis? je vais continuer mes recherches mais je vous avoue que pour le moment je ne trouve rien
Partager