2013-05-17 61 views
1

我有一個問題來了,我想一定是讓任何人寫入數據庫來解決共同問題的解決方案。我一直在想,我忽略了一個明顯的解決方案,這就是爲什麼我在這裏找不到合適的現有問題的原因。堅持對象圖到SQL Server在單個事務

想象一下,你需要讓用戶創建一個「類」,與「學生」的情況下,每個「學生」被分配給一個或更多的書。你有一個明確的層次結構,類 - >學生 - >書。

您有以下表格:

CREATE TABLE Classes (
    ClassId int identity(1,1) primary key, 
    ClassName nvarchar(255) 
    ) 

CREATE TABLE Students (
    StudentId int identity(1,1) primary key, 
    ClassId int, 
    StudentName nvarchar(255), 
    StudentImage image 
    ) 

CREATE TABLE StudentBooks (
    StudentBookId int identity(1,1) primary key, 
    StudentId int, 
    BookName nvarchar(255) 
    ) 

有了這個人爲的情況下,什麼是我保存新對象的這整個圖形選項,同時讓SQL服務器分配的標識列,並保持於一身交易?假設一個班級可能有30個學生,每個學生分配了幾本書。

我可以創建一個交易,並進行單獨的調用爲每個表的每一行,每一個新的父對象返回SCOPE_IDENTITY這樣我就可以節省每一個孩子,同時保持RI完好無損。

我可以使用XML。我想避免這種情況,因爲圖形包含一個字節數組。

還有其他的選擇嗎?我想過在表參數中傳遞層次結構的每個級別。我不知道如何或如果這將工作。 (難道我必須定義一個表類型我的每個表,基本上是重複的模式?)

我可以使用SQL Server 2012這一點。

謝謝!

+2

實體框架已經自動解決這一點,正確地設置標識值在圖中的每個對象。也許你應該考慮使用像EF這樣的ORM,而不是重新發明輪子。 –

+0

你是否已經檢查過一個ORM包裝器? EF很容易使用,並做你想做的。 –

+0

實體框架。 – Dan

回答