簡體   English   中英

在使用帶有實體框架的Table-per-Type時,如何僅獲取基表行?

[英]How do I get just the base table rows when using Table-per-Type with Entity Framework?

我有以下表格在實體框架4.2中映射為table-per-type。

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

嘗試

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

因為你想要的所有行都不是專門的武器或盔甲。 一般來說,我會說你可以嘗試使用Except方法

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

但是,我不知道Except是否在實體框架內有一個SQL轉換(基於這里的一些答案 ,他們建議它可能不會,但這個MSDN頁面會暗示它可能)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM