使用 LINQ 查询存储在基础 class 表中的具体 classes
Using LINQ to query concrete classes stored in base class tables
我刚刚开始了解 LINQ 查询。我看过 MSDN page about type relationships,了解查询的基本原理。但是,当 EF6(代码优先)基于基础 class.[= 将多个具体的 class 合并为一个 table 时,我找不到任何可以帮助我查询的内容。 20=]
我有一个基础摘要 class 声明如下:
public abstract class Product
{
// a whole bunch of fields, properties, and methods
}
然后是一堆具体的 classes 声明如下:
public class ProductOption : Product
{
public ProductOption()
{
// A bunch of stuff to set properties in the base class.
}
}
Entity Framework 创建一个名为 Products
的单个 table,它有一个名为 Differentiator
的列,其值标识具体行的名称 class成立(例如 ProductOption
)。该列不会在 Product
.
中创建 属性
我想做的是(按照 MSDN 示例)声明如下内容:
var queryAllProductOptions = from po in ProductOptions
select po;
我至少从一个人那里听说我需要过滤,看起来像这样(幸运的是我们有一个 属性 可以提供帮助):
var queryAllProductOptions = from po in Products
where po.Category = ProductCategory.Option
select po;
能够使用第一种方法的意义重大。我们有一个解决方法,但在某些情况下它可能会导致并发症(尽管 none insurmountable)。
第一种方法是否有效,或者我们是否需要按照第二种方法概述的方式过滤产品?
我认为你这里有的是 TPH 继承。
在 TPH 映射中查询类型是这样的:
var query =
from lodge in context.Lodgings.OfType<Resort>()
select lodge;
摘录自编程 entity framework 第 392 页
那么你考虑过 OfType 了吗?
我刚刚开始了解 LINQ 查询。我看过 MSDN page about type relationships,了解查询的基本原理。但是,当 EF6(代码优先)基于基础 class.[= 将多个具体的 class 合并为一个 table 时,我找不到任何可以帮助我查询的内容。 20=]
我有一个基础摘要 class 声明如下:
public abstract class Product
{
// a whole bunch of fields, properties, and methods
}
然后是一堆具体的 classes 声明如下:
public class ProductOption : Product
{
public ProductOption()
{
// A bunch of stuff to set properties in the base class.
}
}
Entity Framework 创建一个名为 Products
的单个 table,它有一个名为 Differentiator
的列,其值标识具体行的名称 class成立(例如 ProductOption
)。该列不会在 Product
.
我想做的是(按照 MSDN 示例)声明如下内容:
var queryAllProductOptions = from po in ProductOptions
select po;
我至少从一个人那里听说我需要过滤,看起来像这样(幸运的是我们有一个 属性 可以提供帮助):
var queryAllProductOptions = from po in Products
where po.Category = ProductCategory.Option
select po;
能够使用第一种方法的意义重大。我们有一个解决方法,但在某些情况下它可能会导致并发症(尽管 none insurmountable)。
第一种方法是否有效,或者我们是否需要按照第二种方法概述的方式过滤产品?
我认为你这里有的是 TPH 继承。 在 TPH 映射中查询类型是这样的:
var query =
from lodge in context.Lodgings.OfType<Resort>()
select lodge;
摘录自编程 entity framework 第 392 页
那么你考虑过 OfType 了吗?