Я предполагаю, что вы используете SQL Server.
DbType.String для nvarchar, а DbType.AnsiString для varchar.http://msdn.microsoft.com/en-us/library/system.data.dbtype.aspx
Поскольку вы вызываете хранимую процедуру, ваш параметр автоматически преобразуется в любой тип строки, указанный в хранимой процедуре.Например, если входное значение - DbType.String, а параметр - varchar, SQL Server преобразует его для вас.Не делайте этого наоборот (в коде в DbType.AnsiString, но хранимая процедура ожидает nvarchar), потому что вы получите только анси-символы в хранимой процедуре.
//Don't do this! you will get 'h?ello' in the SP instead of 'hܒello'
SqlParameter("input", "h\u0712ello") { DbType = System.Data.DbType.AnsiString });
Также в EntLib,существует способ вызова хранимых процедур без необходимости указывать имена параметров и тип данных.Вот так:
//calls AddToInventory stored procedure
//the 2 parameters are automatically mapped.
db.ExecuteNonQuery("AddToInventory", 1, "Life Jacket");