gpt4 book ai didi

c# - 实体数据源在哪里

转载 作者:行者123 更新时间:2023-11-30 23:16:08 25 4
gpt4 key购买 nike

我有一个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>

现在我需要显示更多年龄。有没有办法写得更短?

我的尝试:

<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
ConnectionString="name=MyEntities" DefaultContainerName="MyEntities"
EntitySetName="Student" Where="it.Age IN (11,12,13,14)">
</asp:EntityDataSource>

但这会引发错误

The right argument of the set expression must be of CollectionType.

最佳答案

EntityDataSourceWhere 属性上使用 IN 子句的正确方法是将大括号 block 放在所有值周围,如数组​​声明:

<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
ConnectionString="name=MyEntities" DefaultContainerName="MyEntities"
EntitySetName="Student" Where="it.Age IN {11,12,13,14}">
</asp:EntityDataSource>

使用花括号背后的原因可能取决于 ObjectQuery它在给定的上下文中接收针对模型的类型化查询,它可以接受值数组。换句话说,IN 子句在 LINQ 格式上等效于:

int[] ages = new int[] {11, 12, 13, 14};
var query = MyEntities.Student.Where(it => it.Age.Contains(ages));

生成的 SQL 命令将变为:

SELECT * FROM [MyEntities].[Student] WHERE Age IN (11,12,13,14)

其他可能的原因是 ASPX 页面标记中的服务器控制语法遵循关于 attribute value templates 的 XSLT 约定。 ,它将大括号 block 解释为字符串值表达式,并将圆括号解释为方法参数/表达式封闭(参见 XSL transformation details )。

类似问题:

EntityDataSource Where Clause in VB.NET

附加引用:

Creating IN Queries

关于c# - 实体数据源在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com