2012-03-02 80 views
2

我正在使用SQLite本地数据库在Windows Phone 7应用程序上工作,我坚持了一下。CoolStorage字段不等于过滤器

我有几个类的定义,他们每个人都有一个映射设置,我希望检索一些过滤列表。我发现了很多例子,如何检查相等的值,但没有检查不相等的检查。

CSParameterCollection parameters = new CSParameterCollection(); 
     parameters.Add("@CurrentDate", currentDate); 
     parameters.Add("@DirectionId", intVisszaut); 
CSList<Trip> RouteTrips = Route.Trips.FilteredBy("Services.StartDate <= @CurrentDate and Services.EndDate >= @CurrentDate and Services." + DayOfWeek.ToString() + " = 1 and DirectionId = @DirectionId", parameters); 

这个滤镜没有任何问题,但是当我用下面的更新,它失败!

(Services.CalendarDates.Date = @CurrentDate和Services.CalendarDates.Date.ExceptionType! = 2)

CSParameterCollection parameters = new CSParameterCollection(); 
     parameters.Add("@CurrentDate", currentDate); 
     parameters.Add("@DirectionId", intVisszaut); 
CSList<Trip> RouteTrips = Route.Trips.FilteredBy("(Services.CalendarDates.Date != @CurrentDate and Services.CalendarDates.Date.ExceptionType != 2) and Services.StartDate <= @CurrentDate and Services.EndDate >= @CurrentDate and Services." + DayOfWeek.ToString() + " = 1 and DirectionId = @DirectionId", parameters); 

错误代码是: '' 类型的第一次机会异常发生在Vici.CoolStorage.WP7.dll

服务是OneToOne,Services.CalendarDates是OneToMany映射。我是否使用了太多的过滤器值或者我做错了什么?它也不能使用<>。

回答

1

什么是Services.CalendarDates.Date.ExceptionType - 您确定可以将其与数字比较为2吗?

要调试此:

  • 尝试,以确定哪些部分删除你的过滤器表达的每一部分引起的故障
  • 尝试连接到CoolStorage源代码 - 然后就可以看到到底是什么失败(虽然这可能是在它们的堆栈中相当深入,并且可能感觉有点不可读)
+0

似乎表达式过滤器是错误的。我已经将它们全部删除并逐个构建起来,并且以这种方式工作。 :P – Bhawk1990 2012-03-06 17:00:28

1

!=语法不被SQLite理解。您应该使用<>

+0

感谢您提供的信息,我之前没有使用过SQLite,只是MySQL。 – Bhawk1990 2012-03-06 17:02:19