Я использую версию сообщества Visual Studio 2015 и MVC 5, Entity Framework 6. Я только что узнал, как использовать асинхронность и ждать выполнения асинхронного вызова.
Теперь в моем проекте у меня есть только операции CRUD, и для всех операций я написал процедуры хранения, у меня нет больше бизнес-логики в моем API, кроме вызова процедур хранения. Поэтому я использую асинхронный режим и жду вызова процедуры хранения.
Но делая это, я получаю ошибку,
'int' does not contain a definition for 'GetAwaiter' and no extension method 'GetAwaiter' accepting a first argument of type 'int' could be found (are you missing a using directive or an assembly reference?)
Мой код,
[HttpPost]
public async Task<IHttpActionResult> AddContactEmails(Contacts data)
{
using (JodoDataEntities DB = new JodoDataEntities())
{
int Result = await DB.AddContacts(data.userId, data.data);
return Ok();
}
}
Моя процедура хранения очень проста, я что-то возвращаю из нее, но EF принимает ее как тип возвращаемого значения int.
ALTER PROCEDURE [dbo].[AddContacts]
@userId nvarchar(128),
@contacts nvarchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
if not exists(select top 1 * from Contacts where userId = @userId)
begin
insert into Contacts (userId, contacts) VALUES (@userId, @contacts)
end
END
Код EF (генерируется автоматически),
public virtual int AddContacts(string userId, string contacts)
{
var userIdParameter = userId != null ?
new ObjectParameter("userId", userId) :
new ObjectParameter("userId", typeof(string));
var contactsParameter = contacts != null ?
new ObjectParameter("contacts", contacts) :
new ObjectParameter("contacts", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("AddContacts", userIdParameter, contactsParameter);
}
1). Почему я получаю эту ошибку при вызове метода?
2). где мне нужно изменить, чтобы заставить его работать?
3). Так что мне действительно нужно использовать асинхронность и ждать, когда у меня есть только вызовы SP в моем API?