【问题标题】:Search Database using a collection of entity objects使用实体对象的集合搜索数据库
【发布时间】:2009-10-22 17:16:22
【问题描述】:

我确信这是直截了当的,但我对实体查询很陌生,可能以前被问过。

我需要在我的数据库中搜索所有业务,它们的类别存在于我建立的类别集合中

IList<businessCategory> busCatList;

busCatList.Add(businessCategory.CreatebusinessCategory(1,"Tourism"));
busCatList.Add(businessCategory.CreatebusinessCategory(2,"Accomidation"));
busCatList.Add(businessCategory.CreatebusinessCategory(3,"Entertainment"));
busCatList.Add(businessCategory.CreatebusinessCategory(4,"Bar"));
busCatList.Add(businessCategory.CreatebusinessCategory(5,"Club"));

var items = Data.DBEntities.business.Where(b.businessCategory.Contains(busCatList) );

我知道查询的语法是错误的,但基本上我要执行的查询将所有业务都拉出,其中它的类别与 busCatLsit 中的任何类别匹配

在我的数据库中,一项业务可以关联到多个类别

在 SQL 中我会这样做

SELECT name  FROM business
join businessCategoryRlnshp on businessCategoryRlnshp.businessID = business.ID
where categoryID in (1,2,3)

【问题讨论】:

  • 这个问题可能会有所帮助:stackoverflow.com/questions/374267/…
  • 在我的数据库中,我有一个业务表一个BusinessCategoryRelationship 表和一个Category 表,一个业务可以附加到多个Category。我希望能够根据类别对象的集合或类别 ID 的列表来检索集合业务。我为这个简单的查询搜索了两天,但无法获得任何回报

标签: c# asp.net entity-framework linq-to-entities


【解决方案1】:

只是想在这里读懂你的想法;)

var items = busCatList.Where(businessCategory => b.businessCategory.Contains(businessCategory));

【讨论】:

  • 我正在寻找的是找出我是否可以搜索一个实体对象集合,另一个对象集合,如果任何匹配,那么我想拉出父对象。一个企业(父)有一个类别的集合,而 busCatList 是我正在搜索的一个类别的集合,所以如果一个企业有一个存在于 busCatList 中的类别,那么我希望该企业重新调整为一个集合
【解决方案2】:

我真的无法想象在 linq 中有一个好的解决方案 - 我的意思是除了多次执行某种查询 - 每个业务类别一个。

不过,在 SQL Server 2008 中,有一个新功能 - 将表变量传递给存储过程。这可以通过传递带有 1 个 DataTable 作为参数的 DataSet 从代码中完成。 您当然可以为 IEnumerable 编写扩展方法,将其转换为类似于 ToList() 或 ToDictionary() 方法的 DataSet。 存储过程返回实体可以在 EntityFramework 1.0 中使用,所以理论上这应该可以使拼图点击。

PS> 还有一个使用 E-SQL 和可能查询构建器方法的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2016-02-24
    • 1970-01-01
    相关资源
    最近更新 更多