看了《一步一步学Linq to sql》和《在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统》
这两个系列文章后,因为一直使用NBear,所以试着综合了一下主要用NBear.IOC其它的NBear.data里的就没有会了,相应的使用LINQ来做数据处理.
之前一直使用NBear做些WEB应用主要感觉NBear分层清晰,最重要的开发速度快,很少有重复的代码.代码很简洁.相关的实体和数据增删改查的代码都能自动生成.整个应用,只需写aspx.cs里的代码和业务代码.具说NBear的数据处理有损耗, 而Linq又是建立在ado.net之上,这们结合一下,用NBear的快捷+Linq的高性能,关于NBear的使用可以看一下我的Blog中的如何利用NB代码生成工具和NBear框架,快速开发WEB项目,有点偏题了.呵..

接下来要转入正题说说使用NBear+LINQ的多层构架Demo。我们将建立以下项目:

A,网站项目 WebSite:表现层

B,类库项目 ns.ServiceInterfaces  :定义数据访问服务接口

C,类库项目 ns.ServiceImpls:定义数据访问服务的实现

D,类库项目 ns.Entities:实体(LINQ)

项目之间的引用如下:

A引用B和D;

B引用D和NBear.IoC,System.Data.Linq程序集

C引用B、D、NBear.IoC,System.Data.Linq程序集

项目都建好后,第一步就是在ns.Entities项目中用vs创建

创建Linq to sql后,在VS链接上SQL,然后把拖上去.实体就生成OK了 这样ns.Entities就OK了

第二步 ns.ServiceInterfaces  :定义数据访问服务接口
这一步主要定义好表示层要用的数据操作的方式.表示层将直接调用接口.cs里不会有数据处理的代码. 实现分层

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NBear.IoC.Service;
using System.Data.Linq;
using ns.Entities;

namespace ns.ServiceInterfaces
{
    public interface IArticleServices : IServiceInterface
    {
         int InsertArticle();
         Table<Article> GetArticleAll();  //取所有文章数据
    }
}

第三步就是 ns.ServiceImpls:定义数据访问服务的实现
主要是接口的实现层,数据处理的代码将在这个层时来完成

using System.Text;
using ns.ServiceInterfaces;
using ns.Entities;
using System.Data.Linq;

namespace XRW.ServiceImpls
{
    public class ArticleService : IArticleServices
    {

private DataClassesDataContext odbc = new DataClassesDataContext(); //
       
        public int InsertArticle()
        {
            return 1 + 1;
        }

public Table<Article> GetArticleAll()
        {
            try
            {
               return odbc.Article;
            }
            catch (Exception exp)
            {
                 throw exp;
            }
        }
    }
}

在数据访问层创建的DataContext实例负责访问数据库操作相关的方法和属性。
DataContext类包含了数据库表的属性和产生动态SQL脚本执行数据库操作的相关方法。
对于每一个数据表,均有一个对应的实体类,实体类的属性映射到实际的数据表。
访问DataContext类的属性,可以返回一个Table实体集合。
例如:return odbc.Article;

第三步就是在aspx.cs 使用了.
通过前面的实体生成,接口的定义和接口的实现,表示层完全不用和数据库打交道了.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {

int i = ServiceFactory.Create().GetService<IArticleServices>().InsertArticle();
            int d = i;
            Table<Article> articleTab = ServiceFactory.Create().GetService<IArticleServices>().GetArticleAll();

GridView1.DataSource = from tab in articleTab select new { tab.ArticleID, tab.Author, tab.CreateDate };
               
            GridView1.DataBind();
        }
    }

另外NBear.ioc要使用起来,还需要在web.config 里配置
<!-- 设置 castle,entityConfig,log4net  -->
<configSections>
 <section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor"/>
 <section name="entityConfig" type="NBear.Common.EntityConfigurationSection, NBear.Common"/>
</configSections>

<castle>
<components>
 <component id="Article" service="ns.ServiceInterfaces.IArticleServices, ns.ServiceInterfaces" type="ns.ServiceImpls.ArticleService, ns.ServiceImpls"/>
 </components>
</castle>

如果没有配置好会提示找不到相应的接口实现
以上代码是不是很简洁,每层负责每层的工作.
当然以上只是个人观点,也只是做了一个小例子,还没有实际在项目中使用,拿出来跟大家讨论交流.

以上需要了解的知识点:NBear使用和配置,LINQ的使用,Ioc容器,以及多层的理解.欢迎交流NBear的QQ群:7731621

作者:王林 稻草人.net 'Blogs
出处:
转载请注明此处,谢谢!

在.NET3.5平台上使用LinQ to SQL + NBear 创建三层WEB应用相关推荐

  1. 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1)

    在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1) 在新的.Net Framework 3.5平台上,Microsoft发布了LINQ(C# 3.0, ...

  2. 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)...

    在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载) 该主题的Part1- Part5系列文章已经陆续发表.为了感兴趣的朋友阅读方便,这里提供 ...

  3. 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(Part2) 转

    LINQ to SQL LINQ to SQL 提供了访问数据库的方法,且允许我们做所有数据库相关的操作,如查询.插入.更新和删除.LINQ to SQL消除了写存储过程和从数据访问层调用的过程,它可 ...

  4. 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(Part5) 转

    设计开发表现层 表现层负责应用程序的用户界面,图4.1是表现层的详细视图,包括Web Forms, Web User Control, Code-Behind 和共享的用户界面代码.表现层负责推送信息 ...

  5. 神州数码云平台:云实训平台上基础设置与虚拟主机创建

    神州数码云平台:云实训平台上基础设置与虚拟主机创建 云服务实训平台是一个开源的云计算管理平台项目,由 Python 语言编写而且负责通过命令行或者基于 Web 的仪表板实现对计算.存储.及网络资源池的 ...

  6. LINQ to SQL创建三层/多层Web应用系统 (Part 1)

    在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统 (Part 1) 在新的.Net Framework 3.5平台上,Microsoft发布了LINQ(C# 3.0, ...

  7. LINQ TO SQL和Entity Framework 的关系 你了解多少?

    1. LINQ  TO SQL 和EF 特点:  LINQ TO SQL和Entity Framework都是一种包含LINQ功能的ORM 也就是所谓的关系对象的映射.其中包括的有DBFrist  C ...

  8. Linq to SQL之使用事务

    事务是一个原子的工作单位,必须完整的完成单位里的所有工作,要么全部执行,要么全部都不执行.如果提交事务,则事务执行成功:如果回滚事务,则事务执行失败. 事务具备4个基本特性--ACID(原子性.一致性 ...

  9. 自主生态再进一步,龙芯中科完成.NET3.1-LoongArch64平台研发

    近日,龙芯中科.NET团队完成了.NET3.1-LoongArch64平台研发工作,研发的成功标志着围绕龙芯自主指令系统LoongArch的生态建设成果再进一步. 龙芯自主指令系统LoongArch基 ...

最新文章

  1. 关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
  2. 码易众包:软件开发众包的未来不能只靠等待和呐喊
  3. 『信息收集』GoogleHacking快速定位目标网站
  4. 如何打开php页面跳转_php如何跳转页面
  5. c++ 打印条码_金蝶盘点机PDA仓库条码管理之——外购入库扫码开单操作
  6. Fixed Function Shader
  7. 漫谈广告竞价模式(六)
  8. 现代测试技术与软件关系大吗,现代测试技术及应用学习心得
  9. 【SICP练习】53 练习2.21
  10. 软件性能测试中常见问题,性能测试常见的问题
  11. 迭代器、生成器、函数递归与二分法
  12. 记事本如何运行python代码_利用Python开发实现简单的记事本
  13. C#语法基础(三)----窗体设计
  14. 操作系统基本概念汇总
  15. 如何对开发团队的人员进行绩效管理?
  16. 贫穷限制了想象:富豪200亿房产当摆设,贫民窟1440人共用一厕所
  17. 裁员潮下,你需要这 10 大神器
  18. python爬取豆瓣电影名称、评分
  19. 互联网:常见运营术语,PV、UV、GMV、CVR等
  20. 比心app源码,携带对象参数跳转页面

热门文章

  1. lamp mysql大小限制_LAMP 调优之:MySQL 服务器调优
  2. c++实现任意类型数组类的封装
  3. 北京加密机现场select问题
  4. 三面美团Java岗,java多线程匿名内部类
  5. MMKV集成与原理,薪资翻倍
  6. 美团点评APP在移动网络性能优化的实践,赶快收藏备战金九银十!
  7. .net core 杂记:用Autofac替换内置容器
  8. codeforces CF438D The Child and Sequence 线段树
  9. android 调试技巧
  10. 【例9.8】合唱队形