Convert.ChangeType et SqlParameter [Failed to convert parameter value from a SqlPara
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:
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:
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:
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 :(