0

私はこれらの3つのモデルを持っています:

public class Equipment
{
    public int ID { get; set; }
    public string title { get; set; }

}

[Table("Vessels")]
public class Vessel:Equipment
{
    public string Size { get; set; }

}

[Table("Tubes")]
public class Tube : Equipment
{
    public string Pressure{ get; set; }

}

タイトルとタイプが2列の機器のリストを表示したいと思います。

例えば:

Title        Type
------       -------
101-1        vessel
101-2        vessel
102-3        tube

機器の識別列を作成して、各機器のタイプを表示する方法がわかりません。

編集済み

機器エンティティに次のような識別器がある場合:

public class Equipment
{
    public int ID { get; set; }
    public string title { get; set; }
    public string type{ get; set; }  //as discriminator
}

次のように、コントローラーまたはリポジトリーでクエリを取得できます。

var equipments=from e in db.Equipments
               select e;
4

1 に答える 1

1

EFマッピングの観点からディスクリミネーター列を作成することはできません-ディスクリミネーターはサブテーブルであるため、TPT継承はそれをサポートしていません。次のようなものを使用してみてください。

public abstract class Equipment
{
    public int ID { get; set; }
    public string title { get; set; }

    [NotMapped]
    public abstract string Type { get; }
}  

サブタイプのプロパティをオーバーライドTypeして、正しい名前を取得します。このプロパティはマップされていないため、Linq-to-Entitiesクエリで使用することはできません。

于 2013-01-13T12:18:11.987 に答える