//////used to generate ids.
///public
inte***ce
iguidgenerator
usingsystem;
using
system.security.cryptography;
//////
implements
by creating sequential guids.
///this code is taken from
///public
class
sequentialguid : iguidgenerator
= new
sequentialguid();
private
static
readonly randomnumbergenerator rng =randomnumbergenerator.create();
public sequentialguiddatabasetype databasetype
//////
prevents a default instance of the
class from being created.
///use
.
/// private
sequentialguid()
public
guid create()
public
guid create(sequentialguiddatabasetype databasetype)
}public
guid create(sequentialguidtype guidtype)
byte guidbytes = new
byte[16
];
switch
(guidtype)
break
;
case
sequentialguidtype.sequentialatend:
//for sequential-at-the-end versions, we copy the random data first,
//followed by the timestamp.
buffer.blockcopy(randombytes, 0, guidbytes, 0, 10
); buffer.blockcopy(timestampbytes,
2, guidbytes, 10, 6
);
break
; }
return
newguid(guidbytes);
}//////
database type to generate guids.
/// public
enum
sequentialguiddatabasetype
//////
describes the type of a sequential guid value.
/// public
enum
sequentialguidtype
}
usingsystem;
//////
extension methods to make locking easier.
///public
static
class
lockextensions
}//////
executes given
by locking given
object.
/// ///
type of the object (to be locked)
///source object (to be locked)
///action (to be executed)
public
static
void locking(this t source, actionaction) where t : class
}//////
executes given
and returns it's value by locking given
object.
/// ///
return type
///source object (to be locked)
///function (to be executed)
///return value of the
public
static tresult locking(this
object source, funcfunc)
}//////
executes given
and returns it's value by locking given
object.
/// ///
type of the object (to be locked)
///return type
///source object (to be locked)
///function (to be executed)
///return value of the
public
static tresult locking(this t source, funcfunc) where t : class
}}
使用方法:
for (int i = 0; i < 100; i++)
注意:此處生成的基於sqlserver的guid在控制台裡面檢視並不是順序的,但是在資料庫中是可以進行順序排序的,因為sqlserver對guid的排序是有特定規則的,具體可以參考下面的文章
.net中guid的排序規則是從左到右依次進行排序,與數字排序規則一致;
sql server資料庫提供對guid型別的支援,在資料庫中稱為uniqueidentifier
型別,但是排序規則比較複雜:
oracle資料庫未提供對guid型別的支援,使用的是raw bytes型別儲存資料raw(16),具體型別為,排序規則與guid在.net中規則一致;
mysql資料未提供對guid型別的支援,使用的是字串的型別儲存資料,使用是的char(36)型別,由於使用的是字串型別,排序規則與guid在.net中的規則一致。
學習資料庫的開始之巨集觀上了解專案中資料庫的設計過程
專案中資料庫設計的步驟 1.需求分析 2.概念結構設計 3.邏輯結構設計 4.資料庫的物理設計 5.資料庫實施和維護 正在做乙個簡單的網頁專案,在自己對資料庫設計一點都懂的情況下隨便設計了兩個資料庫表並已實現基於兩個資料表的簡單的處理過程。後來在老師的提醒下才知道乙個專案的 資料庫不是憑著自己的一點...
基於資料庫動態生成目錄樹示例
示例功能說明 基於資料庫動態生成目錄樹 支援無限級節點 核心類說明 com.treecache.vo.treeviewvo 節點資訊封裝物件 com.treecache.dao.treeviewdao treeviewvo find integer parentid 根據父節點id查詢所有子節點 c...
django 專案中資料庫的配置,及連線
首先去settings裡邊對資料庫進行配置 default 然後需要去init中輸入以下 import pymysql pymysql.install as mysqldb 現在就可以去建立所需要表和字段了 類名就是建立的表名,下邊的屬性為表中的字段,我們常用的有charfield 字元格式 int...