欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

EntityFrameworkCoreRawSQL

EntityFramework Core Raw SQL

基礎(chǔ)查詢(執(zhí)行SQL和存儲過程)

啥也不說了,拿起鍵盤就是干,如下:

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)吳興免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

 EntityFramework Core Raw SQL

    public class HomeController : Controller
    {        private IBlogRepository _blogRepository;        public HomeController(IBlogRepository blogRepository)
        {
            _blogRepository = blogRepository;
        }        public IActionResult Index()
        {            var list = _blogRepository.GetList();            return Ok();
        }
    }

 EntityFramework Core Raw SQL

 EntityFramework Core Raw SQL

    public class BlogRepository : EntityBaseRepository<Blog>,
        IBlogRepository
    {        private EFCoreContext _efCoreContext;        public BlogRepository(EFCoreContext efCoreContext) : base(efCoreContext)
        {
            _efCoreContext = efCoreContext;
        }        public IEnumerable<Blog> GetList()
        {            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("select * from Blog");            return iQueryTable.ToList();
        }
    }

 EntityFramework Core Raw SQL

 EntityFramework Core Raw SQL

下面我們來看看存儲過程。

 EntityFramework Core Raw SQL

CREATE PROCEDURE dbo.GetBlogList
AS
BEGIN
    SELECT * FROM dbo.Blog
END
GO

 EntityFramework Core Raw SQL

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("EXECUTE  dbo.GetBlogList");            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

參數(shù)查詢 

利用參數(shù)化存儲過程查詢。

 EntityFramework Core Raw SQL

* FROM dbo.Blog WHERE Id =

 EntityFramework Core Raw SQL

結(jié)果利用FromSql就變成了如下:

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var Id = new SqlParameter("Id", "1");            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("EXEC dbo.GetBlogList {0}", 1);            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

上述是利用string.format的形式來傳參,我們也可以利用SqlParameter來傳參,如下:

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var Id = new SqlParameter("Id", "1");            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("EXEC dbo.GetBlogList @id", Id);            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

我們通過開啟調(diào)試,可以清晰看到執(zhí)行的存儲過程。

 EntityFramework Core Raw SQL

通過如上我們知道參數(shù)化查詢有兩種形式,下面我們再來看看linq查詢。

linq查詢

上述我們演示一直直接使用FromSql,其實在此之后我們可以繼續(xù)通過linq來進行查詢,如下:

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var Id = new SqlParameter("Id", "2");            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("EXEC dbo.GetBlogList @id", Id).Where(d => d.Name == "efcore2");            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

之前我們映射了Blog和Post之間的關(guān)系,這里我們只能查詢出Blog表的數(shù)據(jù),通過對上述linq的講解,我們完全可以通過inlcude來顯式加載Post表數(shù)據(jù),如下:

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var Id = new SqlParameter("Id", "2");            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("EXEC dbo.GetBlogList @id", Id).Include(d => d.Posts);            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

 EntityFramework Core Raw SQL

好吧,明確告訴我們對于存儲過程是不支持Inlude操作的,所以要想Include我們只能進行簡單的查詢,如下:

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("select * from blog").Include(d => d.Posts);            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

查找官網(wǎng)資料時發(fā)現(xiàn)居然對表值函數(shù)(TVF)是可以Include的,創(chuàng)建內(nèi)嵌表值函數(shù)如下:

 EntityFramework Core Raw SQL

USE [EFCoreDb]
GO

IF OBJECT_ID('dbo.GetBlog') IS NOT NULL
    DROP FUNCTION dbo.GetBlog;
GO

CREATE FUNCTION dbo.GetBlog 
    (@Name VARCHAR(max)) RETURNS TABLE WITH SCHEMABINDING
AS   
RETURN
 SELECT Id, Name, Url FROM dbo.Blog WHERE Name = @Name
GO

 EntityFramework Core Raw SQL

調(diào)用如下:

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var name = "efcore2";            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("select * from [dbo].[GetBlog] {0}", name).Include(d => d.Posts);            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

結(jié)果出乎意料的出現(xiàn)語法錯誤:

 EntityFramework Core Raw SQL

通過SQL Server Profiler查看發(fā)送的SQL語句如下:

 EntityFramework Core Raw SQL

這能不錯么,官網(wǎng)給的示例也是和上述一樣,如下:

 EntityFramework Core Raw SQL

只是按照和他一樣的搬過來了,未曾想太多,還是粗心大意了,想了好一會,按照我們正常調(diào)用表值函數(shù)即可,我們需要用括號括起來才行,如下:

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var name = "efcore2";            var iQueryTable = _efCoreContext.Set<Blog>().
                FromSql("select * from [dbo].[GetBlog] ({0})", name).Include(d => d.Posts);            return iQueryTable.ToList();
        }

 EntityFramework Core Raw SQL

上述將[dbo.GetBlog]和({0})隔開和挨著都可以。這個時候才不會出現(xiàn)語法錯誤。執(zhí)行的SQL如下才是正確的。

 EntityFramework Core Raw SQL

好了,到了這里關(guān)于EF Core中原始查詢我們就告一段落了,其中還有一個知識點未談及到,在EF Core我們可以直接通過底層的ADO.NET來進行查詢,我們來看下:

底層ADO.NET查詢

 EntityFramework Core Raw SQL

        public IEnumerable<Blog> GetList()
        {            var list = new List<Blog>();            using (var connection = _efCoreContext.Database.GetDbConnection())
            {
                connection.Open();                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT * FROM dbo.Blog";                    using (SqlDataReader reader = command.ExecuteReader() as SqlDataReader)
                    {                        while (reader.Read())
                        {                            var blog = new Blog();
                            blog.Id = Convert.ToInt32(reader["Id"]);
                            blog.Name = reader["Name"].ToString();
                            blog.Url = reader["Url"].ToString();
                            list.Add(blog);
                        }
                    }                      
                }
            }            return list;
        }

 EntityFramework Core Raw SQL

 EntityFramework Core Raw SQL

分享題目:EntityFrameworkCoreRawSQL
網(wǎng)頁路徑:http://aaarwkj.com/article48/jesiep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、標(biāo)簽優(yōu)化電子商務(wù)、網(wǎng)站設(shè)計公司App設(shè)計、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
日本2区3区视频在线观看| 久久九九亚洲欧美中文字幕| 午夜毛片免费在线播放| 国产一区二区精品久久久女同| 国产精品一区二区久久蜜桃麻豆| 国产午夜在线观看免费视频| 成人av免费高清在线| 人人爽人人妻人人澡| 日韩av一区二区久久久| 国产精品久久久久精品三级下载| 亚洲一区二区在线视频在线观看 | 少妇高潮一区二区三区在线| 亚洲风情亚av在线播放| 青草草草草草在线观看| 亚洲中文字幕少妇熟女美妇| 久久综合给合综合久久| 丰满少妇被激烈的插进去| 日韩传媒在线观看视频| 一区二区三区四区在线视频观看| 一区二区久久精品视频| 亚洲欧美日韩一区91| 亚洲精品在线观看第一页| 国产日韩熟女中文字幕| 又黄又湿又刺激中文字幕| 久久亚洲女同第一区综合| 亚洲av日韩精品一区二区| 亚洲欧美日韩综合精品久久| 日韩精品一区二区国产| 日韩精品中文字幕国产精品| 久热在线这里只有精品| 日韩国产精品激情一区| 免费的一区二区中文字幕| 日韩欧美一区二区不卡在线| 精品亚洲一区二区三区| 日本黄色av一区二区| 丰满人妻二区三区性色| 在线观看男人的天堂av| av色狠狠一区二区三区| 午夜少妇伦理一区二区| 91深夜在线免费观看| 韩国电视剧大全免费国语观看 |