日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

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

發布時間:2023/11/29 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在.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应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。