我有Promise.all([
DevicesModel.count().exec(),
RoomsModel.count().exec()
]).then(function(counts) {
console.log('Devices count %d', counts[0]);
console.log('Rooms count %d', counts[1]);
});
asp:EntityDataSource
现在我需要展示更多的年龄。有没有办法写出更短的内容?
我的尝试:
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=MyEntities" DefaultContainerName="MyEntities"
EntitySetName="Student" Where="it.Age = 12 or it.Age = 13">
</asp:EntityDataSource>
但是会抛出错误
set表达式的右参数必须是CollectionType。
答案 0 :(得分:2)
在IN
的{{1}}属性上使用Where
子句的正确方法是将大括号块放在所有值的周围,如数组声明:
EntityDataSource
使用花括号背后的原因可能取决于ObjectQuery,它在给定的上下文中接收针对模型的类型化查询,这可能接受值的数组。换句话说,IN子句在LINQ格式上具有相同的含义:
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=MyEntities" DefaultContainerName="MyEntities"
EntitySetName="Student" Where="it.Age IN {11,12,13,14}">
</asp:EntityDataSource>
生成的SQL命令将变为:
int[] ages = new int[] {11, 12, 13, 14};
var query = MyEntities.Student.Where(it => it.Age.Contains(ages));
其他可能的原因是ASPX页面标记中的服务器控制语法遵循关于attribute value templates的XSLT约定,它将大括号块解释为字符串值表达式,并将括号视为方法参数/表达式封闭(请参阅XSL transformation details )。
类似问题:
EntityDataSource Where Clause in VB.NET
补充参考: