首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Entity Framework中使用Table-per-Type时,如何仅获取基表行?

在Entity Framework中使用Table-per-Type时,如何仅获取基表行?
EN

Stack Overflow用户
提问于 2012-01-14 08:22:19
回答 2查看 74关注 0票数 0

我在Entity Framework4.2中将以下表映射为每个类型的表。

代码语言:javascript
复制
Gear (ID, Name, Description) // base table
Weapon (ID, Damage, Bonus) // FK to Gear table.
Armor (ID, Kinetic, Energy) // FK to Gear table.

我可以把武器和装备分开来:

代码语言:javascript
复制
var weapons = db.Gear.OfType<Weapon>(); // Gets just weapons.
var armor = db.Gear.OfType<Armor>(); // Gets just armor.

但我想不出如何只获取基本行。我希望像这样的东西可以工作,但它仍然得到了所有人。

代码语言:javascript
复制
var basicGear = db.Gear.OfType<Gear>();
EN

回答 2

Stack Overflow用户

发布于 2012-01-14 08:47:16

试一试

代码语言:javascript
复制
var basicGear = db.Gear.Where(g => !(g is Weapon || g is Armor));
票数 2
EN

Stack Overflow用户

发布于 2012-01-14 08:45:57

因为你想要所有不是特别武器或装甲的列。一般来说,我会说你可以尝试使用Except method

代码语言:javascript
复制
var weapons = db.Gear.OfType<Weapon>(); // Gets just weapons.
var armor = db.Gear.OfType<Armor>(); // Gets just armor.
var allOtherStuff = db.Gear.Except(weapons).Except(armor);

甚至是

代码语言:javascript
复制
var allOtherStuff = db.Gear.Except(weapons.Union(armor));

然而,我不知道Except在实体框架中是否有到SQL的转换(基于这里的some answers,他们可能不会,但这个MSDN page可能会)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8859012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档