Websharp使用說(shuō)明(5)
2024-07-21 02:17:16
供稿:網(wǎng)友
 
 
對(duì)象的查詢
 websharp提供了對(duì)對(duì)象查詢的功能,這個(gè)功能通過(guò)query接口提供。query接口的定義可以見(jiàn):附1:websharp主要接口定義——query
 可以通過(guò)下面的辦法來(lái)使用query接口:
persistencemanager pm=persistencemanagerfactory.instance().createpersistencemanager(pp);
query q=pm.newquery("product");
q.filter="productid='p001'";
q.open();
entitydata entity=q.querydata();
datagrid1.datasource=entity;
q.close();
pm.close();
 
 
websharp也提供了直接操縱數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)接口——dataaccess,這個(gè)接口對(duì)ado.net進(jìn)行了一些封裝,可以使程序員更加容易的使用ado.net的功能,并且能夠屏蔽不同數(shù)據(jù)庫(kù)之間的差別。這個(gè)接口的定義可以見(jiàn):附1:websharp主要接口定義——dataaccess
能夠通過(guò)persistencemanager的newdataaccess方法來(lái)初始化一個(gè)dataaccess對(duì)象,然后調(diào)用相應(yīng)的辦法來(lái)執(zhí)行需要的功能。
 
業(yè)務(wù)邏輯的處理
有了上面的工作,我們就可以把這些對(duì)象組合起來(lái),編寫我們的業(yè)務(wù)邏輯。在面向?qū)ο蟮南到y(tǒng)中,業(yè)務(wù)邏輯表現(xiàn)為對(duì)象之間的交互。在一些簡(jiǎn)單的系統(tǒng)中,沒(méi)有復(fù)雜的業(yè)務(wù)邏輯,只是一些數(shù)據(jù)的維護(hù)工作,那么,有了上面兩個(gè)部分的工作,我們實(shí)際上可能已經(jīng)忘成了大部分的工作。
下面是一個(gè)簡(jiǎn)單的例子,表示了一張入庫(kù)單入庫(kù)的過(guò)程,在這個(gè)過(guò)程中,需要修改入庫(kù)單上每種產(chǎn)品的現(xiàn)有庫(kù)存量: 
public void storeintowarehouse(form insertform)
{
 formdetail detail=insertform.formdetail;
 detail.first();
 persistencemanager pm = persistencemanagerfactory.instance().createpersistencemanager();
 transaction tm=pm.currenttransaction;
 tm.begin();
 try
 {
 if(detail.objectcount>0)
 {
 do
 {
 product product=(product)pm.findobjectbyprimarykey
(detail.productid,type.gettype
("logisticsdemo.entitydefinitions.product"));
 product.currentcount+=detail.incount;
 pm.updateobject(product);
 }while(detail.next());
 }
 pm.persistnewobject(insertform);
 tm.commit();
 }
 catch(exception e)
 {
 tm.rollback();
 throw e;
 }
 finally
 {
 pm.close();
 } 
}
 
 可以看到,在使用websharp后,對(duì)于業(yè)務(wù)邏輯的編寫,可以變成一個(gè)非常自然的過(guò)程,也能夠節(jié)省很多代碼量。
 
 
業(yè)務(wù)服務(wù)的提供
業(yè)務(wù)外觀層(business facade)的目的,是隔離系統(tǒng)功能的提供者和使用者,更明確地說(shuō),是隔離業(yè)務(wù)邏輯的軟件的用戶界面(可以參見(jiàn)facade設(shè)計(jì)模式)??梢允褂矛F(xiàn)有的任何方法來(lái)構(gòu)建構(gòu)建這個(gè)層次,在我們提供的例子中,我們使用了web service。