在.NET3.5平台上使用LinQ to SQL + NBear 创建三层WEB应用
看了《一步一步學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应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经常梦到地震是什么意思
- 下一篇: 使用 ADO.NET 的 NextRes