架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9822|回复: 0

[ASP.NET] 基于.NET的LINQ to SQL 三层架构开发之架构建立

[复制链接]
发表于 2015-5-8 15:47:22 | 显示全部楼层 |阅读模式

写在前面的废话

基于.NET的LINQ to SQL 三层体系结构可分为以下几层:Data Linq层、数据访问层、业务逻辑层、表示层。下图一中的箭头符号说明了各层之间的交互情况:数据访问层引用Data LINQ层;业务逻辑层引用数据访问层以及Data LINQ层中的实体类;表示层引用业务逻辑层以及Data LINQ层中的实体类。

其中,Data LINQ层主要包括实体类和Data Context类。通常,一个实体类对于数据库中的一张表。我们可以创建实体类的实例,在不同的层之间作为数据对象进行传输。

1338711995_3101.png

        图 一 LINQ  to SQL  三层架构

下面以创建项目时的登录窗口为例,介绍LINQ  to SQL 的三层架构开发

准备工作

1. 首先需要一个数据库和一张数据表,用来存储登录人员的用户名和密码。这里,使用的是SQL Server 2005 数据库。数据库表结构如图二所示。

1338707277_8002.png

图 二 数据库User表

2. 打开VS,新建项目 ---> 其他项目类型--->Visual Studio解决方案--->空白解决方案。如图三所示。(这里使用的是Visual Studio 2008)

1338707410_2998.png

图 三 新建空白解决方案

3. 添加类库。在解决方案资源管理器中新建的解决方案上右击--->添加--->新建项目--->类库。如图四所示。同样的方法需要添加BLL, DAL, DataLinq三个类库和一个Windows窗体应用程序(如果是Web应用开发,就选择ASP.NET Web应用程序)命名为UI。

1338708016_3585.png

图 四 添加类库项目

添加完成后的结构如图五所示。同时在UI上右击,设UI为启动项。

1338708585_4845.png

图 五 项目结构图

添加引用

在解决方案资源管理器中,添加各层的引用。BLL层选择引用--->右击--->添加引用。如图六所示。添加System.Data.Linq的引用。同时根据上图一所示各层的关系,添加对DAL 和 DataLinq的项目引用。同样的方法,DAL 层添加对System.Data.Linq和DataLinq的项目引用;DataLinq层添加对System.Data.Linq的引用;UI层添加对System.Data.Linq的引用和BLL、 DataLinq的项目引用。

1338709506_9165.png

图 六 添加项目引用

到目前为止,三层架构已经建立起来。下面是给各层添加各自对应的类。

1. 首先是DataLinq层。右击DataLinq--->添加--->新建项目--->选择LINQ to SQL类,如图七所示。

1338710134_8603.png

图 七 添加 LINQ to SQL 类

2. 添加完成后将自动创建一个空白的设计器(.dbml文件),并附有服务器资源管理器 的链接, 同时也创建相关的dbml.layout 文件(XML文件) 和designer.cs 文件。打开服务器资源管理器,并建立到数据库的链接。

1338710758_4319.png

图 八 打开服务器资源管理器

3. 连接数据库。选择工具--->添加数据库。如图九所示。选择刚在新建的数据库,确定连接数据库。这时,就会在服务器资源管理器出现这个数据库。

1338710871_2774.png

4. 选择要用到的数据表User,拖放到设计器上面,如下图十。保存文件。现在,已经自动生成了包含相关的属性、方法的DataContext类和实体类。

1338710261_6749.png

图 十 User类

添加各层代码

DAL层

新建UserDAL类,添加如下代码

//UserDAL.cs

using DataLinq;
using System.Data.Linq;

namespace DAL
{
    public class UserDAL
    {
        private DataLinq.DBLinqDataContext objDataContext = new DataLinq.DBLinqDataContext();

        public User SelectRecordByID(string userid)
        {
            try
            {
                return (from u in objDataContext.User where u.Id == userid select u).Single();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

BLL层

新建UserBLL类,添加如下代码

//UserBLL.cs

using System.Data.Linq;
using DataLinq;

namespace BLL
{
    public class UserBLL
    {
        private DAL.UserDAL objUserDAL = new DAL.UserDAL();

        public User SelectRecordByID(string userid)
        {
            return objUserDAL.SelectRecordByID(userid);
        }
    }
}

UI层代码

//LoginForm.cs

private BLL.UserBLL objUserBLL = new BLL.UserBLL();
      
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            string id = txtId.Text.Trim();
            string psd = txtPsd.Text.Trim();

            User localDataTable = objUserBLL.SelectRecordByID(id);

            if (localDataTable != null && localDataTable.Psd == psd)
            {
                MessageBox.Show("Success");
            }
            else
            {
                MessageBox.Show("false");
            }
        }

至此,登录界面的代码已经完成。可以运行一下查看一下效果了。






上一篇:已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
下一篇:LINQ获取存储过程返回值问题我的存储过程
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-25 10:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表