基于Grove的.NET應(yīng)用程序開發(fā)提示
發(fā)表時間:2023-07-22 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]基于Grove的.NET應(yīng)用程序開發(fā)提示 1. 盡量避免新增映射實體類,主要表現(xiàn)在關(guān)系映射實體。當(dāng)程序需要查詢符合某種條件的記錄時,往往需要通過關(guān)系映射實體進行查詢,當(dāng)該關(guān)系實體在其他調(diào)...
基于Grove的.NET應(yīng)用程序開發(fā)提示
1. 盡量避免新增映射實體類,主要表現(xiàn)在關(guān)系映射實體。當(dāng)程序需要查詢符合某種條件的記錄時,往往需要通過關(guān)系映射實體進行查詢,當(dāng)該關(guān)系實體在其他調(diào)用者使用時,有時又因為缺少某些字段而需要向該關(guān)系映射實體新增查詢字段或重新建立實體,所以在關(guān)系實體建立的時候,應(yīng)盡量考慮其他調(diào)用者的需求,這樣可以有效的避免關(guān)系映射實體的重復(fù)或因關(guān)系實體的改變而導(dǎo)致的其他不安定因素。
2. 避免在數(shù)據(jù)操作層中出現(xiàn)同樣的功能(方法),盡管這些功能可能不屬于同一個管理類。當(dāng)調(diào)用者需要新增或修改(包括刪除)一個實體(非關(guān)系實體)時,應(yīng)首先檢查Façade層中是否已經(jīng)有該功能的存在,這要求數(shù)據(jù)操作層中所有管理類的編寫者明確的注釋好每一個方法的功能描述,要排除歧義。
3. 在實體映射時,如果該實體映射某個主表,一般應(yīng)明確該主表對應(yīng)的子表映射項。如主表表名為Main,子表表名為Sub,對應(yīng)的映射實體為Main.class和Sub.class,該Main實體應(yīng)申請子表項如下(例):
ArrayList _childs=null;
public ArrayList Childs
{
get{
if(this. _childs==null)
{
//oo的初始代碼
this._childs=new ArrayList();
this. _childs=oo.RetrieveChildObjects(this.id,this._ childs,typeof(Sub));
//oo的釋放代碼
}
return this. _childs;
}
set{this._childs=value;}
}
4. 實體操作的定義,主子表關(guān)系應(yīng)有事務(wù)支持,如下:
public void AddMain(Main m)
{
//oo的初始代碼
oo.BeginTransaction();
try{
oo.InsertObject(m);
oo.InsertObjects(m.Childs);
oo.Commit();
}
catch(Exception e)
{
oo.Rollback();
throw e;
}
oo.Dispose();//oo的釋放代碼
}
5. 層間數(shù)據(jù)的傳入傳出,當(dāng)某個功能需要實現(xiàn)通過某個實體的KeyField返回該實體時,傳入的應(yīng)是該實體的KeyField;當(dāng)某個實體的新增或更新時,應(yīng)傳入該實體的實例。
6. 邏輯層Rule的定義