Корпоративная библиотека переписывает код для сохранения данных и возврата значения - PullRequest
0 голосов
/ 14 мая 2010

Без библиотеки данных предприятия, я использую приведенный ниже код для вставки чего-либо в БД и чтения возвращаемого значения из этого

int result = 0;
using (SqlConnection myConnection = 
    new SqlConnection(AppConfiguration.ConnectionString))
{
     SqlCommand myCommand = new SqlCommand("SaveUser", myConnection);
     myCommand.CommandType = CommandType.StoredProcedure;
     myCommand.Parameters.AddWithValue("@location", objUser.Location);

     DbParameter returnValue;
     returnValue = myCommand.CreateParameter();
     returnValue.Direction = ParameterDirection.ReturnValue;
     myCommand.Parameters.Add(returnValue);

     myConnection.Open();
     myCommand.ExecuteNonQuery();
     result = Convert.ToInt32(returnValue.Value);
     myConnection.Close();
}

Как я могу сделать то же самое в Enterprise Datalibrary?Я хочу вернуть значение из вызываемой хранимой процедуры.

Ответы [ 3 ]

1 голос
/ 14 мая 2010

Вы можете попробовать сделать это аналогичным образом. «YourDb» должен быть определен в вашем конфигурационном файле.

int result = 0;

Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("YourDb");
DbCommand myCommand = db.GetStoredProcCommand("SaveUser");
db.AddInParameter(myCommand, "location", DbType.String, objUser.Location);
db.ExecuteNonQuery(myCommand);
result = Convert.ToInt32(db.GetParameterValue(myCommand, "returnValue"));
0 голосов
/ 17 июля 2015

Вы должны добавить возвращаемый параметр к объекту команды перед выполнением запроса.

db.AddParameter(myCommand, "returnvalue", DbType.String, ParameterDirection.ReturnValue, null, DataRowVersion.Default, null);

--Execute the query here using ExecuteNonQuery

result = Convert.ToInt32(db.GetParameterValue(myCommand, "returnValue"));
0 голосов
/ 20 марта 2012

Вы можете сократить его, используя перегрузку ExecuteNonQuery:

Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("YourDb");
db.ExecuteNonQuery("SaveUser", objUser.Location);
int result = Convert.ToInt32(db.GetParameterValue(myCommand, "returnValue"));

, где SaveUser - это имя процесса, а objUser.Location - входной параметр

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...