我真的对使用SubSonic感兴趣,我已经下载了它,到目前为止我很喜欢它,但是看看github和googlegroups上的活动它看起来并不活跃,看起来很像正在濒临死亡的项目。 tekpub上没有关于它的视频,而Rob似乎现在正在为他的所有项目使用nHibernate。我不想专注于学习SubSonic并将其集成到我的项目中,如果它不会活得更久。 所以我的问题是亚音速开发正在发生什么,是否有一个新版本迫在眉睫即将在幕后进行,还是看起来像它一样不活跃?
答案 0 :(得分:22)
我似乎得到了这个问题,如果我不是每两个月左右发布一次。我承认我已经落后于将3.0.0.4推出门了 - 但是有些补丁代码是人们在没有测试的情况下发送的,我会不接受 - 我宁愿花时间和确保我们不推送错误(我显然使用3.0.0.3)。
无论如何 - 这是一个有效的问题,不,SubSonic不会“死”。观看活动的最佳地点是Github网站本身: http://github.com/subsonic/
这是我选择Github的主要原因之一,所以人们可以看到这个活动。我刚刚进行了一些更改,并且正在等待最后一次更改(存在合并冲突)。
RE你的其他观点: 不,我没有使用NHibernate来完成我的工作。我正在将它用于Kona和一个截屏视频。我回答了我从群组中收到的所有电子邮件,但是,就修剪垃圾邮件而言,GoogleGroups是一件令人伤心的事情。您最好的选择是通过电子邮件发送组列表中的问题 - 它会很快得到答复。
就“死亡”而言 - 我需要谈一点。如果开源项目的灵感来自于人们认为有用,那么它们就无法消亡。两者都适用于SubSonic。即使我放弃并告诉所有人关闭,有人会把它捡起来并随之运行。我必须和大多数人一样工作,而且我必须让SubSonic适应工作和家庭之间的少量空闲时间。但是我没办法让它死掉 - 这对我来说意味着太多了。
无论哪种方式 - 我相信我会在6个月内再次回到这里,再次回答这个问题:)。
答案 1 :(得分:1)
我怀疑自从一年中人们度假/休假以来,这里的支持减少了。我刚刚开始使用它,并没有回答一些问题,最后一个版本是在7月,所以我希望继续支持。
答案 2 :(得分:0)
我必须指出,虽然Rob每两个月都没有发布新版本,但Rob表示有时可能会有这种感觉。虽然谷歌集团和github仍有行动。如果圣诞节前有什么比以前更多的新鲜面孔开始贡献(甚至像doco这样简单的那些),这表明我可能比以往更感兴趣,只是人们正在接受它。
我的工作在我们控制它的大多数项目中使用Subsonic(2.2和3.0.0.3)。我们有大约28个.net开发者,他们都喜欢它(我们不会陷入它不能做的事情,因为它本身不是ORM /数据访问。
由于我们只使用Subsonic作为低级查询工具而不是数据访问层,所以如果我们需要保释,我们就没有太紧密地联系它了,但我们还有一个理由。 / p>
我的观点是:它非常易于使用,易于拾取,易于修改,重量轻的查询工具/ ORM(在较小程度上)。有很少的工具具有所有这些属性,但并没有锁定你的百万学院的事情。因此,我不觉得它很快就会消失 - 它太容易上瘾了你的蝙蝠腰带上的工具。
我是一个活跃的唱片粉丝浮标和SubSonic Rocksorz My Sockorz!
因此我向很多人推荐SubSonic并将继续。虽然我们不会在非常大的项目中使用它(更多的是因为你提到的项目连续性原因而不是因为它无法完成这项工作)
答案 3 :(得分:0)
好。
我不知道亚音速是如何进步的。我从2007年开始使用亚音速,在升级到subsonic3之前,我用subnoic2非常方便。它稳定可预测。但是使用subsonic3,甚至3.0.0.3。对我来说有点失望。我不想提及有效的功能。谢谢。亚音速地图表正确。我想谈的是“更新”。我尝试了代码,但它给了例外。在深入研究代码后,它正在签署......
看看我的代码:
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();
我知道,无论我想搜索多少“哪里”,它只返回第一个,更糟糕的是它之后,
//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;
它构建了前一个约束,但删除了最后一个中的所有“条件”。 它怎么可能是对的?
我没有太多关注亚音速的源代码,也不了解它是如何实现的。但我在我的项目中使用subsonic3并高度依赖它来正常工作。真的希望每个bug都能及时测试和修复。