Web API 2を使用してASP.NET MVCに新しくなりました。asp.net MVC with Web APIを使用してasyncとawaitメソッドを作成しました。 2はSQL DBに格納されます。 APIコントローラでリポジトリメソッドを呼び出そうとすると、エラーが発生し、 "system.collections.generic.list"を待てません。誰かがそれについてのアイデアを持っていれば、親切に私に知らせてください。
注:エンティティ・フレームワークを使用したくない代わりに、ストアド・プロシージャを使用してデータを格納したいとします。asp.netで非同期と待機メソッドを作る方法Web api2でMVCを作成する
Model:
namespace AsyncMVCWEBAPI.Models
{
public class Product
{
public string Name { get; set; }
public double Price { get; set; }
public string Category { get; set; }
}
}
API Controller:
public static async Task<Product> GetProduct()
{
return await GetAllProduct(); // Here i'm getting an error can not await "system.collections.generic.list"
}
Repository:
public static IEnumerable<Product> GetAllProduct()
{
using (SqlConnection con = new SqlConnection(connectionString))
{
if (con.State == ConnectionState.Closed)
con.Open();
List<Product> students = new List<Product>();
SqlCommand cmd = new SqlCommand("spGetAllStudentDetails", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Product product = new Product();
product.Price = Convert.ToInt32(rdr["Price"]);
product.Name = rdr["Name"].ToString();
product.Category = rdr["Category"].ToString();
students.Add(product);
}
return students;
}
}
あなたの素晴らしいサポートIvan Yurievさん、ありがとうございます。 con.OpenAsync()とcon.Open()、rdr.ReadAsync()、rdr.Read()を待つ間の違いは、cmd.ExecuteReaderAsync()を待ち、cmd.ExecuteReader()を待つことです。親切に私に知らせてください? –
これらのメソッドは、.net 4.5のasync \ await機能を使用するのに役立ちます。主な考え方は、非同期コードの作成を簡略化することです(asyncはマルチスレッド化ではありません)。したがって、あなたの主なスレッドは、Webリクエスト、データベースコールなどを待っている間は無料です。また、リソースをより効率的に活用するため、公式マニュアルhttps://msdn.microsoftで読むことをお勧めします。 .com/ja-us/library/hh191443.aspx –
ありがとうIvan Yuriev。それは非常に便利です。 –