【问题标题】:Dynamic 'table' name in LINQ to entitiesLINQ to 实体中的动态“表”名称
【发布时间】:2009-09-19 15:45:18
【问题描述】:

我需要从不同级别的报告部门表中进行选择,即 Dept1、Dept2、Dept3 等。 [1] 取决于用户选择的报告级别。如何根据给定的字符串参数(即表名)动态表达要从中选择的“表”?

[1] 任何可以帮助我解决这个问题的人都可以轻松点(让我们谈谈),比所暴露的问题更严重。

突发新闻:看起来我要使用“switch/case”构造。我厌倦了研究愚蠢的非解决方案,而我发现的第一个聪明的解决方案并不容易工作(没有几代人的僧侣,隐秘的奉献精神)。客户的需求在我之前。

【问题讨论】:

  • 这是一种非常糟糕的数据组织方式,但我想你现在已经明白了。
  • 我从大学开始就明白这一点,但我不能总是从一开始就使用自己的设计。 :-(
  • -1 表示不必要的尖酸刻薄和尝试巧妙的措辞。请坚持重点。

标签: .net linq entity-framework


【解决方案1】:

我不相信 EF 具有与 Linq->SQL 的 GetTable 等效的功能,尽管我确实找到了 this post 关于 GetEntitySet 的可能未来实现以及您可以使用的简单实现,但我会检查一下。

【讨论】:

  • 在那个帖子上有一个很好的候选解决方案,淹没在一个极其愚蠢和密度的黑海中,就像只在放射性金属中看到的那样。
【解决方案2】:

您有能力更改架构吗?我怀疑你问这个问题是因为你不问,但如果你问,拥有一个定义部门名称及其 ID 的 Department 表可能会更容易。然后,您可以拥有一个包含您要搜索的实体和一个指向部门的外键的表。

因此,如果您尝试查询的实体是员工,您的表可能如下所示:

Department
------------
ID     int
Name   text

Employee
--------------------
ID             int
Name           text
DepartmentID   int

那么您的查询可能如下所示:

var Employees = from emp in db.Employee.Include("Department")
                where emp.Department.Name == "Sales"
                select emp;

【讨论】:

  • 我可以更改架构,但只能在以后进行增量重写。我今天无法更改它来解决这个问题。
猜你喜欢
  • 2011-04-10
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多