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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

subsonic mysql_Subsonic 介绍

發布時間:2025/4/5 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 subsonic mysql_Subsonic 介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SubSonic:一個數據層構建器(BLL)

導言

一 個易維護的應用程序,不同的類之間有不同的分工,通常分為界面層、業務層和數據訪問層。雖然這一技術有利于更好地組織應用,一些開發人員不愿這么做。創建 一個可靠的和快速的數據訪問層需要一些規劃,一旦你創建了一個,他們看起來都是相似的。SubSonic幫助你基于數據庫自動創建數據庫訪問層。

SubSonic是什么?

SubSonic是一個數據訪問構建器。他還是一個auto-magic 的對象關系映射(ORM)工具,幫助你快速建立一個網站。

像吹噓的那樣,SubSonic能做什么工作,怎么能幫助你更快的建立應用程序?SubSonic通過讀取你的數據庫的結構,并為你構建快速,靈活的數據 訪問層類。他只需要很少的配置,為你提供了不同的方法查詢和保存數據,并提供方法給你定制以適應你的開發風格。SubSonic受到Rub on Rails的ActiveRecord的啟發,不過SubSonic是一個純粹的.NET組件。

SubSonic配置

和其它的ORM比較,SubSonic需要的配置很少,最小要求是將下列配置添加到web.config(app.config)文件:

一個或者多個數據庫連接串

一個SubSonic配置節

連接適當的數據庫連接到SubSonic

就是這么簡單-沒有必要關心要那些表或配置表和對象的映射關系。在實踐中,配置看起來如下:

在Web.config的中添加下表內容,注意< configSections >元素必須是 configuration 元素的第一個子元素。其中節就是通用的連接字符串

name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic"

allowDefinition="MachineToApplication" restartOnExternalChanges="true"

requirePermission="false"/>

removeUnderscores="false" stripTableText="Global_,Account_,_tb,Form_"

stripViewText="Global_,Account_,_vw,Form_" fixPluralClassNames="false"

/>

里的參數說明:

generatedNamespace="Northwind"? 設定生成代碼命名空間,修改為你希望的命名空間;

connectionStringName="數據庫連接"? 使用數據庫的連接字符串,修改為你要使用的數據庫連接字符串;

excludeTableList="^aspnet_Applications$,^aspnet_Membership$,^aspnet_Paths$"

不生成aspnet_Applications, aspnet_Membership, aspnet_Paths這三個表相關代碼;

generateODSControllers="false" 不生成Controllers類;

removeUnderscores="false" 不移除生成對象名稱下劃線;

stripTableText="Global_,Account_,_tb,Form_" 生成表相關對象名稱開頭如果與設定值匹配則去掉;

stripViewText="Global_,Account_,_vw,Form_" 視圖名處理與與上面表處理相同;

fixPluralClassNames="false"? 不去除類名的復數s

當有多個節點時,可以用下面的方法再添加一個,注意加上這個節點

獲取數據

一旦你用SubSonic創建了數據訪問層(DAL),無論是使用代碼生成器還是BuilderProvider,你隨時可以查詢你的數據庫,目前SubSonic支持下列數據庫

微軟SQL SERVER 2000或2005,包括Express版本

Oracle

MySQL

SQLite

SubSonic為你的數據庫里的每個表生成三個類:

表名奇數形式的類:例如有一個表Products,類名就是Product,這是一個強類型的類代表數據庫表中的一行數據,表中的每一列對應類中的強類型的屬性名,允許null的字段定義為nullable

集合類:例如一個表Products,你將得到ProductCollection 類,這個類提供了好多方法處理數據庫的數據

一 個控制器(如ProductController):這提供了基本功能(創建,檢索,更新和刪除)。 而Product和ProductCollection 能裝載自己,是ProductController是專為這些任務而設計的。此外,你可以把控制器作為數據源,為您的網頁使用 ObjectDataSource控件。

Subsonic2.1使用

1.引用命名空間

如果生成代碼文件是Northwind(web.config中generatedNamespace="Northwind",如上面配置)在使用文件中引用

using Northwind;

2.插入記錄

如下代碼可在表Region中插入一條記錄

Region.Insert(10, "TestSubsonic2.1");

3.修改記錄

a.單個記錄修改,下面代碼可修改上面剛插入的記錄

Region region = new Region(10);

region.RegionDescription = "TestSubsonic_Update";

region.Save();

b.批量更新

Query q = Region.Query();

q.AddWhere(Region.Columns.RegionDescription, "test");

q.AddUpdateSetting(Region.Columns.RegionDescription, "TestSubsonic");

q.QueryType = QueryType.Update;

q.Execute();

上面代碼把所有RegionDescription值為test 的記錄修改為TestSubsonic

4.刪除記錄

a.刪除單個記錄

Region.Delete(10);

刪除主鍵值 RegionID 為10的記錄

b.批量刪除

Query q = Region.Query();

q.AddWhere(Region.Columns.RegionDescription, "test");

q.QueryType = QueryType.Delete;

q.Execute();

以上代碼刪除所有RegionDescription值等于test的記錄

5.查詢數據

Query q = Region.Query();

q.AddWhere(Region.Columns.RegionID, Comparison.GreaterOrEquals, 2);

DataTable dt = q.ExecuteDataSet().Tables[0];

以上代碼獲取Region表中RegionID >= 2 的數據表

Query q = Region.Query();

q.AddWhere(Region.Columns.RegionDescription, Comparison.Like, "te" + "%");

DataTable dt = q.ExecuteDataSet().Tables[0];

以上Like查詢,返回所有RegionDescription列值以te開頭的記錄表

6.獲取對象集合

RegionCollection coll = DB.Select().From("Region").Where("RegionId")

.IsGreaterThan(2).ExecuteAsCollection();

int id = coll[0].RegionID;

string description = coll[0].RegionDescription;

以上代碼獲取RegionId > 2 的Region對象集合coll后,就可以操作對象數據值

SubSonic基本操作

查詢

SubSonic2.1版本 – 列出3種查詢。

Product product = new Select().From().Where(Product.ProductIDColumn).IsEqualTo(4)

.ExecuteSingle();

Product product = DB.Select().From().Where("ProductID").IsEqualTo(4)

.ExecuteSingle();

Query query = new Query(Product.Schema);

query.WHERE("ProductID=4").ORDER_BY("ProductID asc");

IDataReader dr = Product.FetchByQuery(query);

DataSet product = new?? Query(Product.Schema).WHERE("ProductID=4").ORDER_BY("Prod? uctID asc")

.ExecuteDataSet();

關聯查詢

DataSet product = new Select(Product.ProductNameColumn,Category.CategoryNameColumn).From()

.InnerJoin(Category.CategoryIDColumn, Product.CategoryIDColumn)

.Where(Category.CategoryIDColumn).IsGreaterThan(4).ExecuteDataSet();

注意. InnerJoin(f2, f1) 的使用方法。

分頁查詢

List products = new Select().From()

.Where(Product.ProductIDColumn).IsEqualTo(4).Paged(1, 30).ExecuteTypedList();

查詢—返回對象

ExecuteReader();?? 返回DataReader

ExecuteScalar();?? 返回對象

ExecuteScalar();? 返回泛型對象

ExecuteSingle(); 返回表實體對象

ExecuteTypedList();? 返回泛型表實休數據集

ExecuteDataSet();? 返回DataSet

ExecuteJoinedDataSet(); 返回關聯查詢 DataSet

Execute(); 返回執行后,數據更新條數

SQL關鍵詞

IsEqualTo(obj) // 等于 value

IsBetweenAnd(obj1, obj2) // [字段1] BETWEEN 值1 AND 值2

StartsWith? // LIEK '1%‘

EndsWith??? // LIEK '%1‘

IsGreaterThan // [字段1] > 值1

IsGreaterThanOrEqualToIsGreaterThan // [字段1] >= 值1

IsLessThan // [字段1] < 值1

IsLessThanOrEqualToIsLessThan // [字段1] <= 值1

WhereExpression / AndExpression // Expression 表示括號

C#:

.Where("1").IsGreaterThan(1)

.And("2").IsGreaterThanOrEqualTo(2)

.AndExpression("3").IsLessThan(3)

.AndExpression("4").IsLessThanOrEqualTo(4).And("5").StartsWith("5")

.AndExpression("6").EndsWith("6")

.ExecuteSingle();

SQL:WHERE 1 > @1AND 2 >= @2 AND (3 < @3) AND (4 <= @4 AND 5 LIKE @5) AND (6 LIKE @6)

修改

Product product = new Product(4);

product.ProductName = "amo";

product.Save();

int i = new Update(Product.Schema)

.Set(Product.ProductNameColumn).EqualTo("Chai -- Amo")

.Where(Product.ProductIdColumn).IsEqualTo(1)

.Execute();

添加

Product product = new Product();

product.ProductName = "my xiaoli";

product.SupplierID = 1;

product.CategoryID = 1;

product.Discontinued = true;

//............

product.Save();

int i = new Insert().Into(Product.Schema,

"ProductName",

"SupplierID",

"CategoryID",

"Discontinued“

)

.Values("my amo", 1, 1, 1).Execute();

刪除

int i = new Delete ().From()

.Where(Product.ProductIDColumn). IsEqualTo(1)

.Execute();

事務1

List queries = new List();

queries.Add(new Insert().Into(Product.Schema).Values("product1"));

queries.Add(new Insert().Into(Product.Schema).Values("product2"));

queries.Add(new Insert().Into(Product.Schema).Values("product3"));

queries.Add(new Insert().Into(Product.Schema).Values("product4"));

queries.Add(new Insert().Into(Product.Schema).Values("product5"));

queries.Add(new Insert().Into(Product.Schema).Values("product6"));

queries.Add(new Insert().Into(Product.Schema).Values("product7"));

//execute in a transaction

SqlQuery.ExecuteTransaction(queries);

事務2

using (SharedDbConnectionScope sp = new SharedDbConnectionScope())

{

using (TransactionScope scope = new TransactionScope())

{

// coding....

scope.Complete();

}

}

減少對ActiveRecord的依賴

MyProduct product = new Select(

Product.ProductNameColumn,

Category.CategoryNameColumn

).From()

.InnerJoin(Category.CategoryIDColumn, Product.CategoryIDColumn)

.Where(Category.CategoryIDColumn).IsGreaterThan(4)

.ExecuteSingle();

string cname = product.CategoryName;

string pname = product.ProductName;

自定義MyProduct實體類

public class MyProduct : ActiveRecord {

public string CategoryName {

get { return GetColumnValue(Category.Columns.CategoryName); }

set { SetColumnValue(Category.Columns.CategoryName, value); }

}

public string ProductName {

get { return GetColumnValue(Product.Columns.ProductName); }

set { SetColumnValue(Product.Columns.ProductName, value); }

}

}

它同時還具有牛排刀...

用SubSonic,你可能忽視了名字空間SubSonic.Sugar ,但如果你這樣做,你錯過了一些有用的特性。SubSonic.Sugar 沒有迷人的功能,而是它提供的"雜項"的功能包括特性為:

文件操作,如在一個請求打開和閱讀文件。

日期操作,如確定兩個日期之間有多少工作日。

字符串操作,例如轉換,以適當的情況下,或剝HTML格式。

數字操作,如確定如果一個數字是不是整數。

Web操作,如打開和閱讀一個網頁,或執行DNS查找。

驗證操作,其中包括通用簽證,萬事達卡和其他常見的信用卡驗證。

擴展SubSonic

沒有應用能夠提供滿足所有需求的解決方案,因此,使用SubSonic所生成的類是不夠的。您可能要像生成的類中添加方法,或者你可能要改變生成的類。 SubSonic滿足這兩方面的需要。

所有的SubSonic生成的類都是局部類。這意味著你可以增加功能到另一個文件,而類的名字時一樣的。 如果你不喜歡SubSonic所生成的類,你可以重寫模板,模板是asp.net頁面。

總結

你 知道你有一個數據庫,你需要連接到一個應用。你知不知道在頁面中直接發送SQL的請求是一個壞的架構。 你知道你應該為你的應用寫一數據層管理CRUD。 你真的想要得到這一切,現在做的,那你可以回家享受天倫之樂。 幫您解決所有這些在優點于一體,而不犧牲性能,可維護性和靈活性。 現在就去下載它并給它一個嘗試。 你的應用會謝謝你的。

來源:http://ctfysj.blog.hexun.com/32587843_d.html

總結

以上是生活随笔為你收集整理的subsonic mysql_Subsonic 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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