日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Entity Framework 6 Recipes 2nd Edition(10-3)译 - 返回结果是一个标量值

發(fā)布時(shí)間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Entity Framework 6 Recipes 2nd Edition(10-3)译 - 返回结果是一个标量值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

10-3. 返回結(jié)果是一個(gè)標(biāo)量值

問題

想取得存儲(chǔ)過程返回的一個(gè)標(biāo)量值.

解決方案

假設(shè)我們有如Figure 10-2所示的ATM機(jī)和ATM機(jī)取款記錄的模型

?

Figure 10-2. 一個(gè)ATM機(jī)和ATM機(jī)取款記錄的模型

我們想要用一個(gè)存儲(chǔ)過程在指定機(jī)器和日期內(nèi)返回所有的取款總額

Listing 10-9 是這個(gè)存儲(chǔ)過程的代碼

Listing 10-9. GetWithdrawals存儲(chǔ)過程,獲取在指定機(jī)器和日期內(nèi)所有的取款總額

create procedure [Chapter10].[GetWithdrawals]

(@ATMId int, @WithdrawalDate date)

as

begin

select SUM(amount) TotalWithdrawals

from Chapter10.ATMWithdrawal

where ATMId = @ATMId and [date] = @WithdrawalDate

end

接下來就是調(diào)用這個(gè)存儲(chǔ)過程的方法:

1. 右擊模型的設(shè)計(jì)視圖,選擇“從數(shù)據(jù)庫更新模型”.在對(duì)話框中“存儲(chǔ)過程和函數(shù)”下勾選Chapter10/

GetWithdrawals.點(diǎn)擊“完成”.

2.( 譯注:我的環(huán)境是win10+vs2013+ef6.1.3,是不需要這步的,第1步已經(jīng)把這步也完成了)右擊模型的設(shè)計(jì)視圖, 選擇“新增“ ? 函數(shù)導(dǎo)入. 從“存儲(chǔ)過程/函數(shù)名稱”下拉框中選擇GetWithdrawals. 在“函數(shù)導(dǎo)入名稱“文本框中輸入:GetWithdrawals. 這個(gè)就是在模型中的方法名稱.在“返回以下內(nèi)容的集合“里勾選“標(biāo)量”,在下拉框里選擇Decimal.單擊“確定”.

3.接下來用 Listing 10-10所示代碼使用這個(gè)GetWithdrawals 存儲(chǔ)過程

Listing 10-10. 用模型GetWithdrawals()方法查詢存儲(chǔ)過程 GetWithdrawals

??? static void Main(string[] args)

??????? {

??????????? DateTime today = DateTime.Parse("5/7/2013");

??????????? DateTime yesterday = DateTime.Parse("5/6/2013");

??????????? using (var context=new EFRecipesEntities())

??????????? {

??????????????? context.Database.ExecuteSqlCommand("delete from chapter10.ATMWithdrawal");

??????????????? context.Database.ExecuteSqlCommand("delete from chapter10.ATMMachine");

??????????????? var atm = new ATMMachine { ATMId = 17, Location = "12th and Main" };

??????????????? atm.ATMWithdrawals.Add(new ATMWithdrawal{Amount= 20.00m,Date=today});

??????????????? atm.ATMWithdrawals.Add(new ATMWithdrawal { Amount = 100.00M, Date = today });

??????????????? atm.ATMWithdrawals.Add(new ATMWithdrawal { Amount = 75.00M, Date = yesterday });

??????????????? atm.ATMWithdrawals.Add(new ATMWithdrawal { Amount = 50.00M, Date = today });

??????????????? context.ATMMachines.Add(atm);

??????????????? context.SaveChanges();

??????????? }

??????????? using (var context=new EFRecipesEntities())

??????????? {

??????????????? var forToday = context.GetWithdrawals(17, today).FirstOrDefault();

??????????????? var forYesterday = context.GetWithdrawals(17, yesterday).FirstOrDefault();

??????????????? var atm = context.ATMMachines.Where(o => o.ATMId == 17).FirstOrDefault();

??????????????? Console.WriteLine("ATMWithdrawals for ATM at {0} at {1}",atm.ATMId,atm.Location);

?????????? ?????Console.WriteLine("\t{0} Total Withdrawn={1}",yesterday.ToShortDateString(),forYesterday.Value.ToString("C"));

??????????????? Console.WriteLine("\t{0} Total Withdrawn={1}",today.ToShortDateString(),forToday.Value.ToString("C"));

??????????? }

?????? ?????Console.WriteLine("\npress any key to exit...");

??????????? Console.Read();

??????? }

輸出結(jié)果如下面的 Listing 10-10:

==============================================================

ATM Withdrawals for ATM at 17 at 12th and Main

5/6/2013 Total Withdrawn = $75.00

5/7/2013 Total Withdrawn = $170.00

==============================================================

它是如何工作的?

注意:EF會(huì)把從存儲(chǔ)過程取回的標(biāo)量值認(rèn)為是一個(gè)集合.在我們的例子里,我們的存儲(chǔ)過程返回一個(gè)單一的decimal值,我們用FirstOrDefault()方法把它從集合中提取出來

附:創(chuàng)建示例用到的數(shù)據(jù)庫的腳本文件

總結(jié)

以上是生活随笔為你收集整理的Entity Framework 6 Recipes 2nd Edition(10-3)译 - 返回结果是一个标量值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。