Subsonic 修复了亚音速3';测试存储库
我一直在尝试使用亚音速3.0的测试存储库支持进行单元测试,但遇到了一些问题,因此我认为我记录了这些问题,以及我提出的修复方案: 自动增量列不起作用 显然,在没有DB的情况下,自动增量列不会自动工作,但如果像我一样,您对所有标识列都使用简单的int或long,则此修复程序运行良好: (这是一份来自的副本,包括完整性) 在ActiveRecord.tt中:Subsonic 修复了亚音速3';测试存储库,subsonic,subsonic3,subsonic-active-record,Subsonic,Subsonic3,Subsonic Active Record,我一直在尝试使用亚音速3.0的测试存储库支持进行单元测试,但遇到了一些问题,因此我认为我记录了这些问题,以及我提出的修复方案: 自动增量列不起作用 显然,在没有DB的情况下,自动增量列不会自动工作,但如果像我一样,您对所有标识列都使用简单的int或long,则此修复程序运行良好: (这是一份来自的副本,包括完整性) 在ActiveRecord.tt中: public override bool Equals(object obj){ if(obj.GetType()==t
public override bool Equals(object obj){
if(obj.GetType()==typeof(<#=tbl.ClassName#>)){
<#=tbl.ClassName#> compare=(<#=tbl.ClassName#>)obj;
return compare.KeyValue().Equals(this.KeyValue());
}else{
return base.Equals(obj);
}
}
1:在函数public void Add(IDataProvider provider)的顶部{
感谢您的帮助-但最好的办法是告诉我们您的问题:)。StackOverflow更适合回答问题-我建议您前往Github并查看最新的来源(我们已经修复了其中的一些)。如果你看到有些事情可以解决,那么补丁是非常受欢迎的。至于第2点,如果记录还没有保存,这仍然是错误的,因为它正在比较KeyValue()。为了确保未保存的记录也具有真正的平等性,我们还必须测试该记录是否为新记录,如果是,则确定另一种平等策略谢谢Rob。在发布此消息之前,我实际上检查了最新的github版本,但看不到任何这些问题的修复方法。此外,自动增量功能,我认为您不会希望我这样做n标准模板(因为我不确定它是否在所有情况下都有效)。其他问题,我今天将提交一个修补程序。太正确了,说成是一个刚咬过的!Remove()对未保存的记录不起作用,因为它们没有可比较的id。如果id==0/IsNew(),可能应该返回到引用相等。
public bool TestMode = false;
<#if(tbl.PK.SysType=="long" || tbl.PK.SysType=="int") {#>
private static <#=tbl.PK.SysType#> next_test_autoid = 0;
<#}#>
public override bool Equals(object obj){
if(obj.GetType()==typeof(<#=tbl.ClassName#>)){
<#=tbl.ClassName#> compare=(<#=tbl.ClassName#>)obj;
return compare.KeyValue().Equals(this.KeyValue());
}else{
return base.Equals(obj);
}
}
public int DeleteMany(Expression<Func<T, bool>> expression)
{
foreach (var x in _items.AsQueryable().Where(expression).ToList())
{
_items.Remove(x);
}
return 0;
}