【发布时间】:2011-07-17 07:27:50
【问题描述】:
如果之前有人问过这个问题,但我的任何搜索中都没有出现“它”,请原谅我。我有两个数据库表 Person 和 Employee 建模一个 Table-per-Type(例如 Employee is-a Person)。在我的 edmx 设计器中,我定义了一个实体 Employee,它将每列映射到它们各自的基础表(例如,姓名 -> 人员、工资 -> 员工)。
“it”允许我在 LINQ 表达式中做这样的事情:
context.Employees.Where("it.Name LIKE 'M%' AND it.Salary > 1234")
是否有任何好的链接来解释我可以期望“它”如何表现?我认为这不是通用的 LINQ 事物,它在某种程度上特定于实体框架。
编辑 0: 为 ObjectContext 生成的 C# 代码如下:
public partial class TestObjectContext : ObjectContext
{
// lots of boilerplate removed for clarity
public ObjectSet<Employee> Employees
{
get
{
if ((_Employees == null))
{
_Employees = base.CreateObjectSet<Employee>("Employees");
}
return _Employees;
}
}
}
【问题讨论】:
-
看起来它指的是对象本身(在本例中为员工)。
-
你从哪里得到这个的?提供一些上下文代码...
-
即使在这种简单的情况下,“它”在生成 SQL 时也是两个不同的表。如果我在表达式中加入一些连接(或包含),我想知道它是如何设计的。
-
@Kris 上下文对象是 EDMX 设计器生成的默认对象(即它是一个 ObjectContext 对象)。似乎 ObjectContext 上的所有 ObjectSet
属性都具有这种有趣的“它”特性。
标签: c# linq entity-framework