2009-08-25 33 views
0

每當我嘗試使用一個簡單的存儲庫來簡單地更新記錄時,我得到的對象引用未設置爲對象錯誤的實例。我懷疑我做的是不正確的,任何人都可以看到下面的代碼行將數據保存到亞音速的問題?亞音速:簡單版本庫 - 更新崩潰

我正在使用.Net 3.5,SQL Server 2008和Subsonic 3.0。

感謝您的任何幫助。

 SimpleRepository repo = new SimpleRepository("Test", SimpleRepositoryOptions.RunMigrations); 

     //Add the test object 
     SimpleObject simple = new SimpleObject(); 
     simple.TestString = "Test"; 
     repo.Add(simple); 

     Console.WriteLine(simple.TestString); 

     //Reload the object and update it 
     SimpleObject simpleReloaded = repo.Single<SimpleObject>(simple.ID); 
     simpleReloaded.TestString = "Editted"; 
     repo.Update(simpleReloaded);//This line seems to crash repeatedly 

     Console.WriteLine(repo.Single<SimpleObject>(simple.ID).TestString); 

回答

2

我的猜測是,由於某種原因,你要上線一個新的對象:

SimpleObject simpleReloaded = repo.Single<SimpleObject>(simple.ID); 

所以,當你嘗試更新亞音速拋出一個異常,因爲simpleReloaded沒有一個主鍵。請檢查simple.ID的值,然後看看是否實際居住simpleReloaded還是你只是得到一個新的SimpleObject

編輯:看起來這是一個錯誤嘗試從github

+0

謝謝,我不薄但它的ID值對於兩個對象都是相同的: simple.ID的值:2 simpleReloaded.ID的值= 2 任何其他想法? – gmn 2009-08-25 20:56:18

+0

如果您更改簡單的TestString的值,然後更新它會發生什麼?你也可以發佈一些關於你的崩潰的更多細節,堆棧跟蹤和更新生成的sql將是最有用的。 – 2009-08-25 21:23:32

+0

您還可以確認您使用的是最新版本的SubSonic - 3.0.0.3。 3.0版本中有不少bug已經修復。 – 2009-08-25 21:24:37