EntityDataSource 在导航属性集合上使用 IN 子句

发布于 2024-10-19 17:40:23 字数 982 浏览 1 评论 0原文

您好,我正在使用 EntityDataSource 来检索我的项目,并且我想获取特定区域的项目。 (项目和区域具有多对多关系,因此项目具有区域导航属性)。我正在使用“IN”来过滤项目。尝试了几种组合,但它不断抛出各种错误。我怎样才能解决这个问题:

下面是我的数据源:

<asp:EntityDataSource ID="CataloguesDataSource" runat="server" ConnectionString="name=ModelContainer" 
    DefaultContainerName="ModelContainer" EnableInsert="false" EnableUpdate="false"  OrderBy="it.EndDate desc,it.id desc" Include="it.Regions"
    EntitySetName="Catalogues"   Select="it.Id,it.Name,it.StartDate,it.EndDate,it.RetailerId"
    Where="it.Retailer.Name=@RetailerName and @Region IN (select p.Id from it.Regions as p)" >
   <WhereParameters> 
        <asp:ControlParameter Name="RetailerName" ControlID="hdnRetailer" DbType="String"  PropertyName="Value" DefaultValue="abc"  />
        <asp:ControlParameter Name="Region" ControlID="hdnregion" DbType="Int32"  PropertyName="Value" DefaultValue=""  />      

     </WhereParameters>
</asp:EntityDataSource>  

Hi I'm using EntityDataSource to retrieve my items, and i want to get the items for a particular region. (items and regions has a many to many relationship, thus item has a regions navigation property). and I'm using "IN" to filter the items. tried several combinations and it kept on throwing various errors. how can i get this sorted out:

Below is My DataSource:

<asp:EntityDataSource ID="CataloguesDataSource" runat="server" ConnectionString="name=ModelContainer" 
    DefaultContainerName="ModelContainer" EnableInsert="false" EnableUpdate="false"  OrderBy="it.EndDate desc,it.id desc" Include="it.Regions"
    EntitySetName="Catalogues"   Select="it.Id,it.Name,it.StartDate,it.EndDate,it.RetailerId"
    Where="it.Retailer.Name=@RetailerName and @Region IN (select p.Id from it.Regions as p)" >
   <WhereParameters> 
        <asp:ControlParameter Name="RetailerName" ControlID="hdnRetailer" DbType="String"  PropertyName="Value" DefaultValue="abc"  />
        <asp:ControlParameter Name="Region" ControlID="hdnregion" DbType="Int32"  PropertyName="Value" DefaultValue=""  />      

     </WhereParameters>
</asp:EntityDataSource>  

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清君侧 2024-10-26 17:40:23

通常使用 in 关键字的方式如下。

这是使用 MVC 3 的情况,并且是在使用实体框架的控制器中。


public ActionResult Index()
        {
            myEntities context = new myEntities();

            var result = from o in context.entitya
                         where o.somecolumn != "blahh"
                         select new
                         {
                             id = o.id,
                             name = o.name
                         };

            return Json(new { data = result, total = result.count() }, JsonRequestBehavior.AllowGet);
        }

Typically using the in keyword is done as follows.

This is with MVC 3 and this is in the controller using Entity framework.


public ActionResult Index()
        {
            myEntities context = new myEntities();

            var result = from o in context.entitya
                         where o.somecolumn != "blahh"
                         select new
                         {
                             id = o.id,
                             name = o.name
                         };

            return Json(new { data = result, total = result.count() }, JsonRequestBehavior.AllowGet);
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文