2012-01-14 41 views
0

我有以下表格映射到實體框架4.2作爲每類型的表。如何在使用Table-per-Type和Entity Framework時獲得基表的行數?

Gear (ID, Name, Description) // base table 
Weapon (ID, Damage, Bonus) // FK to Gear table. 
Armor (ID, Kinetic, Energy) // FK to Gear table. 

我可以分別獲得武器和齒輪這樣:

var weapons = db.Gear.OfType<Weapon>(); // Gets just weapons. 
var armor = db.Gear.OfType<Armor>(); // Gets just armor. 

,但我無法弄清楚如何得到的只是基本的行。我希望像這樣的東西可以工作,但它仍然可以得到所有這些。

var basicGear = db.Gear.OfType<Gear>(); 
+2

所有的武器和防具的齒輪爲好,這樣有什麼錯讓所有的行嗎?或者你的意思是你想要所有不是專門用武器或盔甲的行嗎? – Reddog 2012-01-14 00:26:55

+0

我想獲得所有不是武器或盔甲的裝備。 – Jason 2012-01-14 00:38:15

回答

0

既然你想所有的行都不是武器或盔甲。一般來說,我會說你可以嘗試使用Except method

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); 

甚至

var allOtherStuff = db.Gear.Except(weapons.Union(armor)); 

但是,我不知道,如果除了有一個翻譯實體框架內的SQL(基於some answers在這裏,他們認爲這可能不會但這MSDN page建議它可能)。

2

嘗試

var basicGear = db.Gear.Where(g => !(g is Weapon || g is Armor)); 
相關問題