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:
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
Je comprend tout à l'exception en elle même, mais je ne comprend ce qui peut bien la lever...

En effet j'ai la procédure stockée suivante:
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
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
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);
Je me retrouve avec les valeurs de [parameters] suivantes:
[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