真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

異步查詢和保存(EF6+)

這個(gè)特性從EF6開(kāi)始,在之前的版本中不存在.

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、連山網(wǎng)站維護(hù)、網(wǎng)站推廣。

EF6(.net 4.5)開(kāi)始支持用async和await關(guān)鍵字進(jìn)行異步查詢和保存,不是所有的程序都能從異步中得到好處,當(dāng)被掛起長(zhǎng)時(shí)間的運(yùn)行,網(wǎng)絡(luò)或IO-bound任務(wù),可以被用于提高客戶端的響應(yīng)和服務(wù)端的擴(kuò)展,

  • 什么時(shí)侯適合使用asyn

  • 創(chuàng)建model

  • 創(chuàng)建異步程序

  • 讓程序異步

  • 結(jié)論

什么時(shí)侯適合使用asyn


這篇文章的目的是用一種方式介紹asyn概念,讓它很容易被觀察到異步和同步程序之間的區(qū)別,這個(gè)演練不關(guān)注異步編程帶來(lái)好處的任何場(chǎng)景。

異步操作通常用于執(zhí)行完成時(shí)間可能較長(zhǎng)的任務(wù),如打開(kāi)大文件、連接遠(yuǎn)程計(jì)算機(jī)或查詢數(shù)據(jù)庫(kù)。異步操作在主應(yīng)用程序線程以外的線程中執(zhí)行。應(yīng)用程序調(diào)用方法異步執(zhí)行某個(gè)操作時(shí),應(yīng)用程序可在異步方法執(zhí)行其任務(wù)時(shí)繼續(xù)執(zhí)行。

在客戶端程序(WinForm, WPF等)中,在當(dāng)前的線程執(zhí)行時(shí)異步操作可用于保持UI的響應(yīng)。在服務(wù)端程序中(ASP.NET等)異步線程可以被用于處理其它未來(lái)的請(qǐng)求 - 這是可以減少內(nèi)存的使用量或增加服務(wù)器的吞吐量。

在多數(shù)的程序中使用異步?jīng)]有明顯的好處,甚至是有害的。使用測(cè)試,分析和通用場(chǎng)景來(lái)測(cè)量在你的特定的情況下的影響。

Create the model


創(chuàng)建控制臺(tái)程序AsyncDemo

異步查詢和保存(EF6+)

添加EntityFramework Nuget package

異步查詢和保存(EF6+)

安裝EntityFramework package

異步查詢和保存(EF6+)


創(chuàng)建Model - AsyncDemo.cs:

using System.Collections.Generic;
using System.Data.Entity;

namespace AsyncDemo
{
    public class BloggingContext : DbContext
    {
        public DbSet Blogs { get; set; }
        public DbSet Posts { get; set; }
    }

    public class Blog
    {
        public int BlogId { get; set; }
        public string Name { get; set; }

        public virtual List Posts { get; set; }
    }

    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }

        public int BlogId { get; set; }
        public virtual Blog Blog { get; set; }
    } 
}

創(chuàng)建一個(gè)異步程序

class Program
{
    static void Main(string[] args)
    {
        PerformDatabaseOperations();

        Console.WriteLine();
        Console.WriteLine("Quote of the day");
        Console.WriteLine("Don't worry about the world coming to an end today... ");
        Console.WriteLine("It's already tomorrow in Australia.");

        Console.WriteLine();
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }

    public static void PerformDatabaseOperations()
    {
        using (var db = new BloggingContext())
        {
            // Create a new blog and save it 
            db.Blogs.Add(new Blog
            {
                Name = "Test Blog #" + (db.Blogs.Count() + 1)
            });
            db.SaveChanges();

            // Query for all blogs ordered by name 
            var blogs = (from b in db.Blogs
                         orderby b.Name
                         select b).ToList();

            // Write all blogs out to Console 
            Console.WriteLine();
            Console.WriteLine("All blogs:");
            foreach (var blog in blogs)
            {
                Console.WriteLine(" " + blog.Name);
            }
        }
    }
}

PerformDatabaseOperations方法會(huì)保存一個(gè)新的Blog到數(shù)據(jù)庫(kù)并且獲取所有的Blogs然后打印在控制臺(tái)中。

異步查詢和保存(EF6+)

修改為異步

//添加Tasks引用
using System.Data.Entity;
using System.Threading.Tasks;

static void Main(string[] args) 
{ 
    var task = PerformDatabaseOperations(); 

    Console.WriteLine("Quote of the day"); 
    Console.WriteLine(" Don't worry about the world coming to an end today... "); 
    Console.WriteLine(" It's already tomorrow in Australia."); 

    task.Wait(); 

    Console.WriteLine(); 
    Console.WriteLine("Press any key to exit..."); 
    Console.ReadKey(); 
} 

public static async Task PerformDatabaseOperations() 
{ 
    using (var db = new BloggingContext()) 
    { 
        // Create a new blog and save it 
        db.Blogs.Add(new Blog 
        { 
            Name = "Test Blog #" + (db.Blogs.Count() + 1) 
        }); 
        Console.WriteLine("Calling SaveChanges."); 
        await db.SaveChangesAsync(); 
        Console.WriteLine("SaveChanges completed."); 

        // Query for all blogs ordered by name 
        Console.WriteLine("Executing query."); 
        var blogs = await (from b in db.Blogs 
                    orderby b.Name 
                    select b).ToListAsync(); 

        // Write all blogs out to Console 
        Console.WriteLine("Query completed with following results:"); 
        foreach (var blog in blogs) 
        { 
            Console.WriteLine(" - " + blog.Name); 
        } 
    } 
}

原文:https://msdn.microsoft.com/en-us/data/jj819165.aspx


網(wǎng)站名稱:異步查詢和保存(EF6+)
轉(zhuǎn)載源于:http://weahome.cn/article/goedcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部