案例实作图解.Net Entity Framework 教程
案例實(shí)作圖解.Net Entity Framework 教程
? ? 可以跟隨我操作成功的截圖一步步進(jìn)行實(shí)作。
第零章 ?Entity Framework資源鏈接和版本
一 資源鏈接
? ? Microsoft的EF鏈接:
https://msdn.microsoft.com/en-us/data/aa937723.aspx
二 版本
? ? 截至今日-2015年2月,EF的最新版本為6.1。
?第一章 使用VS2012+Entity Framework 6.1 開發(fā)Winform版本的超市管理系統(tǒng)
一 關(guān)于用Nuget程序包管理器安裝EF 6.1
? ? 網(wǎng)上有甚多教程講述使用Nuget程序包管理器安裝EF 6.1。經(jīng)鄙人證明,用Nuget程序包管理器安裝EF 6.1,是針對(duì)單個(gè)解決方案的。首先新建一個(gè)Form項(xiàng)目SuperMarket,選擇菜單 項(xiàng)目-管理Nuget程序包 ,如下圖;
? ? 沒有已經(jīng)安裝的包;以前曾經(jīng)建立一個(gè)空項(xiàng)目EF1,用NuGet安裝過EF6.1,如下圖;
? ? 在SuperMarket中選擇最近的程序包,如下圖;
點(diǎn)擊安裝進(jìn)行安裝;
安裝之前和之后,解決方案SuperMarket的目錄結(jié)構(gòu)分別如下:
? ? 由圖可見,安裝之后,在解決方案下添加packages文件夾,其中包含EF6.1的lib和tool;同時(shí)在項(xiàng)目中自動(dòng)添加引用,如下圖;
二 建立主窗體和添加商品窗體,用EF6.1 瀏覽和添加商品
1 數(shù)據(jù)庫(kù)
? ? 項(xiàng)目所有Sql Server數(shù)據(jù)庫(kù)下載:
http://pan.baidu.com/s/1bn50Oij
? ? 下載后導(dǎo)入Sql Server,即可繼續(xù)進(jìn)行后續(xù);
2 建立主窗體,添加商品窗體,添加實(shí)體數(shù)據(jù)模型
? ? 主窗體頂部為菜單,左側(cè)添加一個(gè)TreeView,設(shè)計(jì)時(shí)在TreeView任務(wù)中按超市管理內(nèi)容編輯節(jié)點(diǎn);添加商品窗體和普通添加記錄型窗體。
? ? 右擊項(xiàng)目,添加新項(xiàng),添加ADO.NET實(shí)體數(shù)據(jù)模型,
? ? 完成后項(xiàng)目結(jié)構(gòu)如下;
? ? 在項(xiàng)目中多出了superMarketModel.edmx。
3 實(shí)現(xiàn)商品瀏覽
? ? 在主窗體中添加窗體級(jí)變量:
SuperMarketEntities smef;
? ? 在窗體啟動(dòng)事件中生成:
smef = new SuperMarketEntities();
? ? 在TreeView的節(jié)點(diǎn)選中事件中添加代碼如下:
? ? ? ? private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
? ? ? ? {
? ? ? ? ? ? switch (e.Node.Text)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case "商品瀏覽":
? ? ? ? ? ? ? ? ? ? var shpquery = smef.Merchandise; ? ?//Merchandise為商品表
? ? ? ? ? ? ? ? ? ? var list = shpquery.ToList();
? ? ? ? ? ? ? ? ? ? dataGridView1.DataSource = list;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case "新增商品":
? ? ? ? ? ? ? ? ? ? af = new addShpForm();
? ? ? ? ? ? ? ? ? ? af.ShowDialog();
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? 在不用EF時(shí)返回整個(gè)表通常是一個(gè)DataSet;使用EF時(shí)則返回的一個(gè)List,把該List賦值給grid控件的DataSource屬性即可;運(yùn)行,結(jié)果如下圖:
4 實(shí)現(xiàn)添加商品
? ? 在addShpForm添加窗體級(jí)變量:
SuperMarketEntities smef;
? ? addShpForm啟動(dòng)事件:
? ? ? ? ? ? smef = new SuperMarketEntities();
? ? ? ? ? ? var query = smef.Sort;
? ? ? ? ? ? foreach (Sort c in query)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? comboBox1.Items.Add(c.SortName);
? ? ? ? ? ? }
? ? 在窗體啟動(dòng)時(shí)獲取商品類別表類別名稱字段的所有內(nèi)容添加到comboBox1,以供錄入數(shù)據(jù)時(shí)選擇;
? ? 添加商品按鈕事件代碼:
? ? ? ? //添加商品
? ? ? ? private void button1_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? int sequencenum=smef.Database.ExecuteSqlCommand("select max(sequencenumber) from merchandise");
? ? ? ? ? ? ? ? sequencenum=sequencenum+1;
? ? ? ? ? ? ? ? Merchandise m = new Merchandise();
? ? ? ? ? ? ? ? m.MerchandiseNumber = textBox1.Text;
? ? ? ? ? ? ? ? m.TreatyCode = textBox2.Text;
? ? ? ? ? ? ? ? string sortname="";
? ? ? ? ? ? ? ? switch(comboBox1.Text)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case "電器類":
? ? ? ? ? ? ? ? ? ? ? ? sortname="DQ1004";
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "禮品類":
? ? ? ? ? ? ? ? ? ? ? ? sortname="LP1006";
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "日用品":
? ? ? ? ? ? ? ? ? ? ? ? sortname="RY1005";
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "蔬果類":
? ? ? ? ? ? ? ? ? ? ? ? sortname="SG1003";
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "食品類":
? ? ? ? ? ? ? ? ? ? ? ? sortname="SP1002";
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case "生鮮類":
? ? ? ? ? ? ? ? ? ? ? ? sortname="SX1001";
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? m.SortNumber=sortname;
? ? ? ? ? ? ? ? m.RetailPrice=Convert.ToDecimal(textBox3.Text);
? ? ? ? ? ? ? ? m.MerchandiseName=textBox4.Text;
? ? ? ? ? ? ? ? m.MerchandiseSpec=textBox5.Text;
? ? ? ? ? ? ? ? m.Units=textBox6.Text;
? ? ? ? ? ? ? ? m.PurchasePrice=Convert.ToDecimal(textBox7.Text);
? ? ? ? ? ? ? ? m.CheckTerm=Convert.ToDecimal(textBox8.Text);
? ? ? ? ? ? ? ? m.Remark=textBox9.Text;
? ? ? ? ? ? ? ? smef.Merchandise.Add(m);
? ? ? ? ? ? ? ? smef.SaveChanges();
? ? ? ? ? ? }
? ? ? ? ? ? catch (Exception ex)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? MessageBox.Show(ex.Message);
? ? ? ? ? ? }
? ? ? ? }
? ? 商品表第一個(gè)字段為整型的sequencenumber,每添加一個(gè)記錄,獲取該字段最大值,然后加1,賦給新記錄;此處使用在EF中直接執(zhí)行SQL來獲取最大值;
? ? ? ? smef.Database.ExecuteSqlCommand("select max(sequencenumber) from merchandise");
? ? 后面的代碼把文本框的值賦給Merchandise對(duì)象m;添加m,保存修改即可,如上代碼所示;運(yùn)行,結(jié)果如下圖;
?
添加成功:
? ? 這樣我們就通過EF實(shí)現(xiàn)了在商品表中添加生鮮類商品“金條”的操作。
總結(jié)
以上是生活随笔為你收集整理的案例实作图解.Net Entity Framework 教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 案例实作图解Asp.Net MVC教程
- 下一篇: 图解数据库辅助软件教程