我有一個問題來了,我想一定是讓任何人寫入數據庫來解決共同問題的解決方案。我一直在想,我忽略了一個明顯的解決方案,這就是爲什麼我在這裏找不到合適的現有問題的原因。堅持對象圖到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這一點。
謝謝!
實體框架已經自動解決這一點,正確地設置標識值在圖中的每個對象。也許你應該考慮使用像EF這樣的ORM,而不是重新發明輪子。 –
你是否已經檢查過一個ORM包裝器? EF很容易使用,並做你想做的。 –
實體框架。 – Dan