C#中使用MVC架构(三)

五、实现业务逻辑层BLL

定义一个基本业务逻辑接口IBaseService,作各业务访问的总中介,也就是说视图层只通过IBaseService的接口对象,访问业务层,具体访问哪个业务,是通过注入IBaseService的实现类来完成的,可根据需要生成具体业务类,实现接口中定义的抽象方法。

业务逻辑层通过对应数据实现类,访问模型数据。

1.新建IBaseService接口,定义单个业务的CRUD泛型操作

 public  interface IBaseService

    {

         void add(Object obj);

         void delete(int id);

         void edit(Object obj);

         BindingSource list();

         Object getById(int id);

         BindingSource getByName(String name);

}

 

public abstract class BaseDataService

    {

        private String msg;

        public String Msg { get => msg; set => msg = value; }

 

    }

2.新建UserService类,实现BaseDataService,IBaseService接口,实现用户业务。

public class UserService : BaseDataService,IBaseService

    {        

        UserDao userDAO;  //用户数据访问类      

        public UserService() { userDAO = new UserDao(); }

       

        public void add(Object obj)

        {

            User user = (User)obj;

            int num=userDAO.Add(user);

            this.Msg = "成功添加" + num + "条信息";

        }

 

        public void delete(int id)

        {

           int num= userDAO.Delete(id);

           this.Msg = "成功删除"+num+"条信息";

        }

 

        public void edit(Object obj)

        {

            User user = (User)obj;

            int num=userDAO.Edit(user);

            this.Msg = "成功修改" + num + "条信息";

        }

 

        public BindingSource list()

        {

            DataSet ds=userDAO.FindAll();

            //向listDgView绑定数据源

            BindingSource bs = new BindingSource();

            bs.DataSource = ds.Tables[0];

            return bs;

            //listDgView.DataSource = bs;            

            //listDgView.ReadOnly = true;

        }

 

        public object getById(int id)

        {

            return userDAO.Get(id);

        }

 

        public BindingSource getByName(string name)

        {

            SqlDataReader sdr= userDAO.Get(name);

            BindingSource bs = new BindingSource();

            bs.DataSource = sdr;

            

            return bs;

        }

 

}

3.新建TopicService类,实现BaseDataService,IBaseService接口,实现标题业务。

 public class TopicService: IBaseService

    {

        TopicDao topicDAO;

        String msg;

        public String Msg { get => msg; set => msg = value; }

        public TopicService() { topicDAO = new TopicDao(); }

        public void add(Object obj)

        {

            topicDAO.Add((Topic)obj);

        }

 

        public void delete(int id)

        {

            int num = topicDAO.Delete(id);

            msg = "成功删除" + num + "条信息";  

        }

 

        public void edit(Object obj)

        {

            topicDAO.Edit((Topic)obj);

        }

 

        public BindingSource list()

        {

            DataSet ds=topicDAO.FindAll();

            //向listDgView绑定数据源

            BindingSource bs = new BindingSource();

            bs.DataSource = ds.Tables[0];

            return bs;            

        }

 

        public object getById(int id)

        {

            return topicDAO.Get(id);

        }

 

        public BindingSource getByName(string name)

        {

            SqlDataReader sdr= topicDAO.Get(name);

            BindingSource bs = new BindingSource();

            bs.DataSource = sdr;

            return bs;

        }

}

4.新建TopicService类,实现BaseDataService,IBaseService接口,实现标题业务。

public class NewsService : IBaseService

    {

        NewsDao newsDAO;

        String msg;

        public String Msg { get => msg; set => msg = value; }

        public NewsService()

        {

            this.newsDAO = new NewsDao();

        }

 

        public void add(object obj)

        {

            this.newsDAO.Add((News)obj);

        }

 

        public void delete(int id)

        {

            int num=newsDAO.Delete(id);

            msg = "成功删除" + num + "条信息";

        }

 

        public void edit(object obj)

        {

            this.newsDAO.Edit((News)obj);

        }

 

        public BindingSource list()

        {

            DataSet ds = newsDAO.FindAll();

            //向listDgView绑定数据源

            BindingSource bs = new BindingSource();

            bs.DataSource = ds.Tables[0];

            return bs;

        }

 

        public object getById(int id)

        {

            return newsDAO.Get(id);

        }

 

        public BindingSource getByName(string name)

        {

            SqlDataReader sdr = newsDAO.Get(name);

            BindingSource bs = new BindingSource();

            bs.DataSource = sdr;

            

            return bs;

        }

    }

用户登录业务,这里直接访问了数据层

  public class UserLogin    {

        

        String msg;

        public String Msg

        {

            get

            {

                return this.msg;

            }

            set { this.msg = value; }

        }       

        public User login(String name,String pwd)

        {

            const String sql = "SELECT * FROM [newsDB].[dbo].[users] where uname=@uname and upass=@upass";

            AdoConnector ado = new AdoConnector();

            User user=null;

            //验证用户是否存在

            SqlDataReader sdr = ado.QueryReader(sql,

                new SqlParameter[] {new SqlParameter("@uname",name), new SqlParameter("@upass",pwd)});

            if (sdr != null)

            {

                user = new User((String)sdr["uname"], (String)sdr["upass"]);

            }

            ado.CloseConnection();

            return user;

        }

    }

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值