当前位置:编程学习 > C#/ASP.NET >>

求助各路大神!!实体框架+3层架构的库存管理的BLL层的写法!!!!

这是DAL层的代码
 public class DAL
    {
        private static DAL _instance = null;
        private saleEntities db;
        public static DAL getInstance()
        {
            if (_instance == null)
            {
                _instance = new DAL();

            }
            return _instance;
        }
        public DAL()
        {
            this.db = new saleEntities();
        }

        public List<Product> getProduct()
        {
            return db.Product.ToList();
        }
        public bool AddProduct(Product pro)
        {
            bool Flag = false;
            try
            {
                db.AddToProduct(pro);
                db.SaveChanges(true);

                Flag = true;
            }
            catch { }
            return Flag;
        }

        public bool UpdateProduct(Product pro)
        {
            bool Flag = false;
            try
            {
                var q = db.Product.Where(u => u.ProNo == pro.ProNo).FirstOrDefault();
                if (q != null)
                {
                    q.ProName = pro.ProName;
                 
                    q.Price = pro.Price;
                    q.Stocks = pro.Stocks;
                    
                    db.SaveChanges(true);

                    Flag = true;
                }
            }
            catch { }
            return Flag;
        }

        public bool DeleteProduct(Product pro)
        {
            bool Flag = false;
            try
            {
                var q = db.Product.Where(u => u.ProNo == pro.ProNo).FirstOrDefault();
                if (q != null)
                {
                    db.DeleteObject(q);
                    db.SaveChanges(true);

                    Flag = true;
                }
            }
            catch { }
            return Flag;
        }

        public List<ProIn> getProIn()
        {
            return db.ProIn.ToList();
        }

        public bool AddProIn(ProIn p1)
        {
            bool Flag = false;
            try
            {
                db.AddToProIn(p1);
                db.SaveChanges(true);

                Flag = true;
            }
            catch { }
            return Flag;
        }

        public bool UpdateProIn(ProIn p1)
        {
            bool Flag = false;
            try
            {
                var q = db.ProIn.Where(u => u.ProNo == p1.ProNo).FirstOrDefault();
                if (q != null)
                {
                    q.InputDate = p1.InputDate;
                    q.Quantity = p1.Quantity;
                    db.SaveChanges(true);

                    Flag = true;
                }
            }
            catch { }
            return Flag;
        }

        public bool DeleteProIn(ProIn p1)
        {
            bool Flag = false;
            try
            {
                var q = db.ProIn.Where(u => u.ProNo == p1.ProNo).FirstOrDefault();
                if (q != null)
                {
                    db.DeleteObject(q);
                    db.SaveChanges(true);

                    Flag = true;
                }
            }
            catch { }
            return Flag;
        }

        public List<ProOut> getProOut()
        {
            return db.ProOut.ToList();
        }

        public bool AddProOut(ProOut p2)
        {
            bool Flag = false;
            try
            {
                db.AddToProOut(p2);
                db.SaveChanges(true);

                Flag = true;
            }
            catch { }
            return Flag;
        }

        public bool UpdateProOut(ProOut p2)
        {
            bool Flag = false;
            try
            {
                var q = db.ProOut.Where(u => u.ProNo == p2.ProNo).FirstOrDefault();
                if (q != null)
                {
                    q.SaleDate = p2.SaleDate;
                    q.Quantity = p2.Quantity;
                    db.SaveChanges(true);

                    Flag = true;
                }
            }
            catch { }
            return Flag;
        }

        public bool DeleteProOut(ProOut p2)
        {
            bool Flag = false;
            try
            {
                var q = db.ProOut.Where(u => u.ProNo == p2.ProNo).FirstOrDefault();
                if (q != null)
                {
                    db.DeleteObject(q);
                    db.SaveChanges(true);

                    Flag = true;
                }
            }
            catch { }
            return Flag;
        }


    }

[b]这是BLL层查询的代码,但是添加、修改、删除的写法不会写了,求大神帮助[/b][/b]
public class BLL
    {
        private static BLL _instance = null;
        public static BLL getInstance()
        {
            if (_instance == null)
            {
                _instance = new BLL();
            }
            return _instance;
        }


        public List<DAL.Product> getProduct()
        {
            return DAL.DAL.getInstance().getProduct();
        }

       

        public List<DAL.ProIn> getProIn()
        {
            return DAL.DAL.getInstance().getProIn();
        }

        public List<DAL.ProOut> getProOut()
        {
            return DAL.DAL.getInstance().getProOut();
        }

        
    }

这是UI层的查询写法! UI层其他功能的写法又该怎样写,求大神帮助下!!
 dataGridView1.DataSource = BLL.BLL.getInstance().getProduct();

这是实休数据库的表


这是界面



真心求各路大神帮助啊!!!!!!!!
框架 数据库 --------------------编程问答-------------------- 求各路大神帮助啊!!!!!!! --------------------编程问答-------------------- 看见代码就头大,尤其是别人写的代码 --------------------编程问答-------------------- 这种分层只是空有一个样子,
职责并没有清楚地分离,
比如:DAL中放入了业务逻辑的代码,
这个DAL换一个项目就不能用了,几乎没有重复利用的价值 --------------------编程问答-------------------- 不需要重复利用的,谁能解决下我的问题??? --------------------编程问答-------------------- “为了三层而三层”有什么持续价值呢?设计软件时不用心,就会套用“增删改查”概念。

打开的手机看看那些应用,里边有几个应用程序的用户界面是千篇一律地罗列什么“增删改查”的?

设计软件就要从设计师的角度、从美工的角度,最根本地是从用户的角度,去设计。然后设计达到了较高水准之后,需求暂时(在两周内)稳定了之后,要适配需求跟低级的代码之间的鸿沟,这才需要BLL。因此BLL的接口设计,直接对应了表现层的交互时间的操作,不是什么“增删改查”。

如果你的BLL就是数据库表某一个表(例如什么ProIn、ProOut)数据的增删改查,你何必还写什么BLL、DAL?直接在BLL里调用ADO.NET来调用sql语句增删改查就行了。
--------------------编程问答-------------------- 简单的用动软代码生成器,生成下就够了 --------------------编程问答-------------------- 你不从业务出发,不懂业务,也就写不出BLL服务接口设计。

我也帮不了你。 --------------------编程问答-------------------- 其实我也不想这样写的,但老师的要求是这样,他要没说过这种技术。我只是个学生而已 --------------------编程问答-------------------- 让我们打个比方。比如说移动公司推出了一个持久化的“充话费给别人送虚拟礼品”的平台,这个平台上集成了这方面业务服务,而它把前端开发工作开放出来给各种小公司——甚至个人——可以集成到他们自己的网页、手机应用、企业应用里边。设计这个服务系统的人,就是BLL设计师。

这个叫做BLL层。 --------------------编程问答-------------------- 其实我根本还没接触过3层,是那个老师要求要用的,被逼得没有办法啊 --------------------编程问答--------------------
引用 8 楼 deabc1 的回复:
其实我也不想这样写的,但老师的要求是这样,他要没说过这种技术。我只是个学生而已

许多老师不可能教你软件设计知识,因为有限的时间内要教会一些知识(还的让你听懂,否则你就会把学费要回去了),因此类似“动软”之类软件公司所忽悠的所谓“三层”就被这些老师不断提及了。实际上你要注意到那些软件唯一有点价值的是方便于初学者做几个界面,千万不要被其“封装代码”这方面的八股模式而害死(将来你手工编写代码时千万不要使用这种格式)。

实际上,例如 RIA Service 等等许多更高级的模块也封装了“增删改查”数据操作,然后各种数据绑定控件(例如DataGrid等等)可以直接用其自动化地产生增删改查界面。只不过微软没有一个专门针对企业UI开发部门来加强这些控件的设计而已。

只要是提高效率、适应变化地开发工具,就会往“三层”概念上靠,因为三层是实际上最初级分层概念。你将来会学到软件设计知识(而不是像一个流水线上的工人一样去重复繁重的体力劳动),那时才知道如何在高层次上去应用分层概念。 --------------------编程问答--------------------
引用 11 楼 sp1234 的回复:
引用 8 楼 deabc1 的回复:其实我也不想这样写的,但老师的要求是这样,他要没说过这种技术。我只是个学生而已
许多老师不可能教你软件设计知识,因为有限的时间内要教会一些知识(还的让你听懂,否则你就会把学费要回去了),因此类似“动软”之类软件公司所忽悠的所谓“三层”就被这些老师不断提及了。实际上你要注意到那些软件唯一有点价值的是方便于初学者做几个界面,千万不要被其“……


其他这个老师说得我们都是听不懂的,他在上面打代码,也不解释给我们听的!!我上面的代码也是参照他的打出来的。他说这是他自己捣出来的一个实体+3层的方法,很少人用的,要我们用这种技术来做作业... --------------------编程问答-------------------- 老师既然提出要求,
它应该告诉你分层的标准是什么,(哪怕是狗屁不通的)

现在的老师烂事无用,学生更是怂包,
从来不敢在知识上质疑和挑战老师的,
就连应得的教学权利都不敢主动向老师索取,

在我上学的记忆中,只有极个别的老师因为我的"刁难"打击报复过我,
而我因此受到更多老师的重视,得到的远远超过失去的,

同样也是一个老师和我说:有的老师会糊弄学生,但是你不能糊弄自己
--------------------编程问答-------------------- 我们对应届生的要求是:踏踏实实认真完成学业就可以了,
我们不要求他们"精通"任何编程技术,会照猫画虎,"基本了解"足矣
--------------------编程问答-------------------- 如果楼主所说的老师,指的是社会上的IT职业培训机构,
那么,我认为他们根本就不具备最起码的教学资质,
这些机构利用国家政策法规的漏洞大发不义之财 --------------------编程问答--------------------
引用 15 楼 microtry 的回复:
如果楼主所说的老师,指的是社会上的IT职业培训机构,
那么,我认为他们根本就不具备最起码的教学资质,
这些机构利用国家政策法规的漏洞大发不义之财

是我学校的老师,是学校的网络管理员!!有技术,但不会教学生的一个老师 --------------------编程问答--------------------
引用 16 楼 deabc1 的回复:

他份内的职责没有尽到,你不去质疑他?
不但要质疑他,还要督促校方赶紧整改,这是你的权利 --------------------编程问答-------------------- 既然要求用3层加实体 
就先去理解什么是3层架构
--------------------编程问答--------------------
引用 17 楼 microtry 的回复:
引用 16 楼 deabc1 的回复:
他份内的职责没有尽到,你不去质疑他?
不但要质疑他,还要督促校方赶紧整改,这是你的权利
所有人都知道,他一直是这样教的,质疑有什么用... --------------------编程问答-------------------- 求来求去的代码 有何用
CTRL CV  就算毕业了 你也上不了这行
浪费钱
不如早点转行学别的 --------------------编程问答--------------------
引用 3 楼 microtry 的回复:
这种分层只是空有一个样子,
职责并没有清楚地分离,
比如:DAL中放入了业务逻辑的代码,
这个DAL换一个项目就不能用了,几乎没有重复利用的价值


你的DAL层主要干什么,难道就是一个执行sql语句的类?如果这样直接用sqlcommand就行了,不必套个类绕来绕去的 --------------------编程问答-------------------- 还是建议你去看下C#编程入门的书籍
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,