1
我實施的UnitOfWork和我的Web應用程序庫的風格數據訪問層的主鍵。我想用我自己製作的自定義表來審覈對數據庫的更改。將新項目添加到上下文時會發生問題。該項目被添加到上下文中,但SaveChanges()
方法尚未被調用,因此該實體仍處於Added
狀態。這意味着尚未分配主鍵,這意味着我無法創建審計記錄,並且從存儲庫中調用SaveChanges()
將違反存儲庫編碼風格。有沒有辦法獲得添加狀態的實體主鍵?
嘗試性解決方案
,我能想到的唯一解決方法是使用隨機的GUID,以便客戶端可以生成它們。我有點猶豫,因爲我聽說使用隨機的GUID作爲身份字段可能代價高昂。
代碼
//Method in my repository class
public void Insert(T entity)
{
//Adds the entity the context
dbSet.Add(entity);
Audit audit= new Audit
{
Created = DateTime.Now,
PrimaryKey = entity.Key, //This is not set because the State of the entity is still Added
};
Context.Audits.Add(audit);
}
不要在數據庫的GUID列上集羣,不管你做什麼 – 2012-07-13 19:51:40
這意味着我的數據庫中的所有索引都必須是非連續的GUID。我不知道這將如何影響性能 – 2012-07-16 14:31:19
您需要權衡這個要求。在您的方案中預先保留項目並讓數據庫生成順序標識是否是更好的選擇? – 2012-07-16 14:52:01