hoyong

导航

案例实作图解.Net Entity Framework 教程(转)

案例实作图解.Net Entity Framework 教程

 

    可以跟随我操作成功的截图一步步进行实作。

 

第零章  Entity Framework资源链接和版本

一 资源链接

    Microsoft的EF链接:

https://msdn.microsoft.com/en-us/data/aa937723.aspx

 

二 版本

    截至今日-2015年2月,EF的最新版本为6.1。

 

 第一章 使用VS2012+Entity Framework 6.1 开发Winform版本的超市管理系统

一 关于用Nuget程序包管理器安装EF 6.1

    网上有甚多教程讲述使用Nuget程序包管理器安装EF 6.1。经鄙人证明,用Nuget程序包管理器安装EF 6.1,是针对单个解决方案的。首先新建一个Form项目SuperMarket,选择菜单 项目-管理Nuget程序包 ,如下图;

    没有已经安装的包;以前曾经建立一个空项目EF1,用NuGet安装过EF6.1,如下图;

    在SuperMarket中选择最近的程序包,如下图;

点击安装进行安装;

安装之前和之后,解决方案SuperMarket的目录结构分别如下:

    由图可见,安装之后,在解决方案下添加packages文件夹,其中包含EF6.1的lib和tool;同时在项目中自动添加引用,如下图;

 

二 建立主窗体和添加商品窗体,用EF6.1 浏览和添加商品

数据库

    项目所有Sql Server数据库下载:

http://pan.baidu.com/s/1bn50Oij

    下载后导入Sql Server,即可继续进行后续;

2 建立主窗体,添加商品窗体,添加实体数据模型

    主窗体顶部为菜单,左侧添加一个TreeView,设计时在TreeView任务中按超市管理内容编辑节点;添加商品窗体和普通添加记录型窗体。

    右击项目,添加新项,添加ADO.NET实体数据模型,

    完成后项目结构如下;

    在项目中多出了superMarketModel.edmx。

 

3 实现商品浏览

    在主窗体中添加窗体级变量:

SuperMarketEntities smef;

 

    在窗体启动事件中生成:

smef = new SuperMarketEntities();

 

    在TreeView的节点选中事件中添加代码如下:

        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时返回整个表通常是一个DataSet;使用EF时则返回的一个List,把该List赋值给grid控件的DataSource属性即可;运行,结果如下图:

 

4 实现添加商品

    在addShpForm添加窗体级变量:

SuperMarketEntities smef;

 

    addShpForm启动事件:

            smef = new SuperMarketEntities();
            var query = smef.Sort;
            foreach (Sort c in query)
            {
                comboBox1.Items.Add(c.SortName);
            }

    在窗体启动时获取商品类别表类别名称字段的所有内容添加到comboBox1,以供录入数据时选择;

 

    添加商品按钮事件代码:

        //添加商品
        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);
            }

        }

    商品表第一个字段为整型的sequencenumber,每添加一个记录,获取该字段最大值,然后加1,赋给新记录;此处使用在EF中直接执行SQL来获取最大值;

        smef.Database.ExecuteSqlCommand("select max(sequencenumber) from merchandise");

    后面的代码把文本框的值赋给Merchandise对象m;添加m,保存修改即可,如上代码所示;运行,结果如下图;

 

添加成功:

    这样我们就通过EF实现了在商品表中添加生鲜类商品“金条”的操作。

posted on 2017-04-09 20:47  hoyong  阅读(249)  评论(0编辑  收藏  举报