Есть ли способ использовать DataContext
для выполнения некоторого явного SQL и возврата значения первичного ключа с автоинкрементом вставленной строки без с использованием ExecuteMethodCall
? Все, что я хочу сделать, это вставить некоторые данные в таблицу и получить вновь созданный первичный ключ, но без использования LINQ (я использую явный SQL в своих запросах, просто использую LINQ для моделирования данных).
Приветствия
РЕДАКТИРОВАТЬ : По сути, я хочу сделать это:
public int CreateSomething(Something somethingToCreate)
{
string query = "MyFunkyQuery";
this.ExecuteCommand(query);
// return back the ID of the inserted value here!
}
РЕШЕНИЕ
Этот занял некоторое время. Вы должны передать ссылку на параметр OUTPUT в вашем sproc в список параметров вызывающей функции, например, так:
[Parameter(Name = "InsertedContractID", DbType = "Int")] ref System.Nullable<int> insertedContractID
Тогда вы должны сделать
insertedContractID = ((System.Nullable<int>)(result.GetParameterValue(16)));
как только вы это назвали. Тогда вы можете использовать это вне этого:
public int? CreateContract(Contract contractToCreate)
{
System.Nullable<int> insertedContractID = null; ref insertedContractID);
return insertedContractID;
}
Обратите внимание на GetParameterValue(16)
. Он индексируется в зависимости от того, какой параметр находится в вашем списке параметров (кстати, это не полный код).