NBear設計筆記

2022-01-14 09:57:09 字數 2221 閱讀 8564

1. 資料庫自關聯,如 樹 ,自關聯,不能強制外來鍵約束, 否則,一條資料也插入不進去。

database db 

=new

database(

"dbo");

console.readkey();

var ss 

=stateentity.findbyid(

"010");

wth.stop();

console.writeline(

"nb:          "+

wth.elapsedticks );

}var ddd 

=objectconvertor.toobject

<

datarow

>

(ss);

datarow dr 

=dtb.newrow();

foreach

(propertyinfo item 

inss.gettype().getproperties())

}wth.stop();

console.writeline(

"reflect:     "+

wth.elapsedticks);

}datarow dr 

=dtb.newrow();

foreach

(propertyinfo item 

inss.gettype().getproperties())

}wth.stop();

console.writeline(

"fast t:      "+

wth.elapsedticks);

}測試結果:

nb:          315023

reflect:      18563

fast t:      251098

dict t:        20955

nb 是 nbearlite 1.0.2.5 裡提供的方法,內部是用 emit 實現的。

fast t: 是 提供的開源 反射元件。

dict t: 是乙個用 dictionary儲存資料的 實體。 如下:

public

partial

class

stateentity : nbearlite.activerecord

<

stateentity

>

, inbmodal

set}public

string

name  

set }

public

void

setvalue(

string

key, 

object

value)

public

object

getvalue(

string

key)

public

string

getkeys()

static

stateentity()

}普通的 reflect 更快。 猜測:

fast reflector 用了快取, 當迴圈次數少的時候,看單次執行效率, 它執行的效率比較差。

從我得到的資料, emit 應該比普通的 reflect 更快。 跟 fast reflector 一樣。它也很慢。

dictionary

<

string

, object

> 比反射還慢? 不理解。泛型嗎 ? 我換成 namevaluecollection 還是一樣。換成 hashtable 效能比反射好一些(18000)。看來, 泛型的效能一般。 其它的更不行。  

測試不能僅僅玩 快取。 那樣的話, 就沒為了測試而測試了。有更準的測試歡迎拍磚。

4.sqlserver 裡的 bit ,雖然對應到 c# 裡是 bool , 但是 nbearlite 是對應不上的。 因為c# 裡沒有把 bit 轉換為 bool 的方法 。 改用 int 吧。

getselectlastinsertautoincrementidsql 函式應該為:

return "select @@identity";

當有插入觸發器的時候,scope_identity()會返回 null 值 . msdn說 : scope_identity 只返回插入到當前作用域中的值 .意思是說, 觸發器插入在另外乙個作用域.想想也是.  而 @@identity 不受限制.

NBear3 7移植到 Mono2 筆記

準備 在 opensuse11 下搭建了 mono2 環境 更新系統,把能打的補丁全打上,這樣可以啟用 debugger 1.windows 上的 system.data.sqlite 不能正常載入。去除,新增 mono.data.sqlite 2.mono 沒有完全實現 system.data.d...

使用NBear設計乙個新的實體類時需要進行的操作

當我們使用nbear設計乙個新的實體類時,我們需要進行以下的操作 1 在實際開發專案之外,建立乙個新的實體設計專案 該專案只在設計時有用 2 新建乙個實體類進行設計。3 新增對nbear的引用。4 新增對實際專案的引用。5 設計實體元資料。6 編譯。7 通過nbear.tools.entitydes...

設計模式筆記

1 類繼承與介面繼承的比較。物件的類與物件的型別的比較 乙個物件的類定義了物件怎麼樣實現的,同時也定義物件內部狀態和操作的實現。但是物件的型別只與他的介面有關,藉口即物件能響應的請求的集合。乙個物件可以有多個型別,不同的類物件可以有相同的型別。理解類繼承和介面繼承之間的差別也十分重要。類繼承根據乙個...