我对使用SubSonic非常感兴趣,已经下载了它并且到目前为止很喜欢它,但是从GitHub和Google Groups的活动情况来看,它似乎不太活跃,看起来很像一个即将消亡的项目。在Tekpub上没有关于它的视频,Rob似乎现在对所有项目都使用nHibernate。如果它的寿命不长,我就不想专注于学习SubSonic并将其集成到我的项目中。
因此,我的问题是SubSonic的开发进展如何?是否有即将发布的新版本?在幕后是否有许多事情正在进行,还是正如看起来那样不活跃?
我对使用SubSonic非常感兴趣,已经下载了它并且到目前为止很喜欢它,但是从GitHub和Google Groups的活动情况来看,它似乎不太活跃,看起来很像一个即将消亡的项目。在Tekpub上没有关于它的视频,Rob似乎现在对所有项目都使用nHibernate。如果它的寿命不长,我就不想专注于学习SubSonic并将其集成到我的项目中。
因此,我的问题是SubSonic的开发进展如何?是否有即将发布的新版本?在幕后是否有许多事情正在进行,还是正如看起来那样不活跃?
我得到了这个问题,似乎如果我不每两个月弹出一个版本,那么SubSonic就会“死亡”。我承认我在推出3.0.0.4方面有些落后,但是有些人发送的补丁代码没有经过测试,我不会接受这种情况 - 我宁愿花时间确保我们不会推出错误(显然我在3.0.0.3中犯了错误)。
无论如何 - 这是一个有效的问题,SubSonic并没有“死亡”。最好的地方是在Github网站上查看活动情况: http://github.com/subsonic/
这是我选择Github的主要原因之一,让人们可以看到活动情况。我刚刚引入了许多更改,并正在等待最后一个更改进行微调(存在合并冲突)。
关于您提到的其他问题: 不,我没有在我的工作中使用NHibernate。我正在为Kona和一个屏幕录像使用它。我回答了我们小组收到的几乎所有电子邮件,但是是的,GoogleGroups在清除垃圾邮件方面很糟糕。您最好直接向小组列表发送电子邮件以获得问题的答案 - 它将很快得到回答。
关于“死亡” - 我需要谈一下。如果开源项目的诞生源于灵感,且被人们认为有用,那么它们就不可能死亡。SubSonic 也是如此。即使我放弃并告诉每个人离我远点,仍然会有人接手并继续开发它。像大多数人一样,我必须工作,并将 SubSonic 安排在工作和家庭之间的极少空闲时间内。但我绝不会让它消失-因为它对我来说意义太重要了。无论哪种方式 - 我肯定会在6个月后再次回到这里,回答这个问题:)。
我猜想由于现在是假期,人们都在度假,因此这里的支持可能会减少。我刚开始使用它,有些问题还没有得到回复,而上一个版本是在七月发布的,所以希望支持能够继续。
嗯。
我不知道Subsonic的进展如何。我从2007年开始使用Subsonic,在升级到Subsonic3之前,我对Subnoic2非常满意,它很稳定、可预测。但是对于Subsonic3,即使是3.0.0.3版本,对我来说有些失望。我不想提及哪些功能可以正常工作。感谢Subsonic正确地映射表格。我想谈论的是“更新”问题。我尝试了代码,但它抛出了异常。经过深入研究代码,发现它正在签名...
看看我的代码:
FarmDB db = new FarmDB();
db.Update<UserAdornment>().Set(o => o.is_working == false)
.Where(o => o.user_name == HttpContext.Current.User.Identity.Name && o.type == userAdornment.type && o.id != userAdornment.id).Execute();
这是正确的吗?
在修复了NullReferenceException
之后,有人问我也遇到过的问题。每次运行此查询时,所有user_name=currentname
的行都会将is_working
设置为false
。检查代码后发现:
在update.cs中。
public Update<T> Where(Expression<Func<T, bool>> column)
{
LambdaExpression lamda = column;
Constraint c = lamda.ParseConstraint();
检查 lamda.ParseConstraint();
。我发现,无论我想搜索多少个“where”,它只返回第一个,更糟糕的是,在它之后。
//IColumn col = tbl.GetColumnByPropertyName(c.ColumnName);
//Constraint con = new Constraint(c.Condition, col.Name, col.QualifiedName, col.Name);
//con.ParameterName = col.PropertyName;
//con.ParameterValue = c.ParameterValue;
它从先前的约束条件中构建了另一个约束条件,但删除了最后一个约束条件中的所有“条件”。这怎么可能是正确的呢?
我没有深入研究subsonic的源代码,也不太理解它是如何实现的。但我在我的项目中使用subsonic3,并高度依赖它能正常工作。真的希望每个bug都能及时测试和修复。
我必须声明,虽然根据Rob的说法,每两个月就会有一个新版本发布,但你有时可能会有这种感觉。虽然在Google Group和GitHub上仍然有活动。如果在圣诞节之前有更多新面孔开始做出贡献(即使只是简单的文档),这表明对Subsonic的兴趣可能比以往任何时候都要大,只是人们正在继续努力。
我们的工作中,在我们能够控制的大多数项目中,都使用Subsonic(包括2.2和3.0.0.3版本)。我们有大约28名.NET开发人员,他们都喜欢它(我们不会纠缠于它不能做什么,因为它本身并不是一个ORM/数据访问层)。
由于我们只将Subsonic用作低级查询工具,而不是作为数据访问层,所以如果需要放弃它,我们与它的联系并不是那么紧密,但我们还没有理由这样做。
我的观点是:它是一个非常非常易于使用、容易上手、易于修改、轻巧的查询工具/ORM(在某种程度上)。市面上很少有同时具备所有这些特性又不会束缚你思维的工具。正因为如此,我认为它不会很快消失-它是一种让你上瘾的工具,就像蝙蝠侠腰带上的武器。
我是一个活跃的记录粉丝,SubSonic Rocksorz My Sockorz!
因此,我向很多人推荐SubSonic,并将继续这样做。虽然我们不会在非常大的项目中使用它(更多是出于像你提到的项目连续性原因,而不是因为它不能完成工作),