亚音速VB.NET问题

时间:2009-06-12 09:32:15

标签: vb.net subsonic

当我使用VB.NET使用亚音速时,它似乎有问题标记记录为旧和清洁。每当我使用ExecuteSingle或ExecuteTypedList查询时,我需要手动MarkClean和MarkOld,否则每当我保存它将保存为新记录。

我是唯一一个面临这个问题的人吗?我正在使用SubSonic 2.2顺便说一句。

3 个答案:

答案 0 :(得分:1)

我检查了SubSonic的源代码..我发现VB类生成器没有实现IActiveRecord。我想很可能是因为VB.Net似乎不支持继承的“重新实现”或者你称之为......

因此,当我调试时,我发现Utility.IsSubSonicType返回false(因为ActiveRecord类返回IReadOnlyRecord,但IsSubSonicType检查IActiveRecord和IRecordBase),因此不调用SetLoadState和MarkClean。

所以我不确定这是一个错误还是故意的。有什么方法可以解决这个问题吗?

答案 1 :(得分:0)

当您使用ExecuteSingle或ExecuteTypedList时,您可能正在使用没有这些属性的类,我认为目的是您正在填充POCO而不是(必要)实体或其他ORM对象。

ExecuteAsCollection和所有.Load方法都按预期运行,因为它们调用SetLoadState()和/或MarkClean()。

就个人而言,我不会遇到这个问题,因为我将Subsonic纯粹用作(智能)DAL(仅限CRUD),而我自己的实体层负责处理脏/新的事情。

答案 2 :(得分:0)

是的,我遇到了同样的问题。 MarkClean和MarkOld在设置属性和保存之前修复了问题。 see this

相关问题