1

原谅我对 Linq to SQL 的无知,但是......

如何一举查询多个表?

例子:

我想查询,例如 4 个表,以获取包含以下单词“企鹅”的标题。有趣的是,每个表还有一个名为 TITLE 的字段。

表格是这样的:

在此处输入图像描述

我想在每个表(列:TITLE)中查询“企鹅”这个词。每个表都被引用(通过外键)到一个简单地称为Reference的父表,并链接到一个名为 REF_ID 的列上。因此,理想情况下,结果应该返回与查询条件匹配的 REF_ID 列表。

如果您能提供帮助,您将获得丰厚的回报...... (带有绿色勾号;)

我的代码只适用于一张桌子 - 但不适用于两张:

var refs = db.REFERENCEs
.Include(r => r.BOOK).Where(r => r.BOOK.TITLE.Contains(titleString)).Include(r => r.JOURNAL.AUTHORs)
.Include(r => r.JOURNAL).Where(r => r.JOURNAL.TITLE.Contains(titleString));
4

1 回答 1

0

不久前我有一个类似的场景,最终创建了一个合并我的表的视图,然后将该视图映射到一个 LINQ-to-SQL 实体。

像这样的东西:

create view dbo.References as

  select ref_id, title, 'Book' as source from dbo.Book
  union all
  select ref_id, title, 'Journal' from dbo.Journal
  union all
  select ref_id, title, 'Magazine' from dbo.Magazine
  union all
  select ref_id, title, 'Report' from dbo.Report

映射看起来像这样(使用属性):

[Table(Name="References")]
public class Reference {

  [Column(Name="Ref_Id", IsPrimaryKey=true)]
  public int Id {get;set;}

  [Column]
  public string Title {get;set;}

  [Column]
  public string Source {get;set;}
}

然后查询可能如下所示:

var query = db.GetTable<Reference>().Where(r => r.Title.Contains(titleString));
于 2012-08-20T14:11:27.080 回答