2009-08-25 39 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