2012-02-11 15 views
2

データベースからオブジェクトを取得する際に、オブジェクトに配列も取得するようにフレームワークを取得すると、問題が発生します。私は、サブオブジェクトのために、インクルード( "サブオブジェクト")が動作するように見えますが、配列やリストのために働かせることはできません。データベース内のオブジェクトから配列またはリストを取得する

マイモデル:エンティティの

public class RunData 
{ 
    [Key] 
    [Required] 
    public int id { get; set; } 
    public List<RunElement> Runs { get; set; } 
    public string[] DataLabels { get; set; } 
} 

一覧:

public class ProgramEntities:DbContext 
{ 
    public DbSet<RunData> RunData { get; set; } 
    public DbSet<RunElement> RunElement { get; set; } 
} 

コントローラコード:

public ViewResult Details(int id) 
    { 
     RunData rundata = (from RunData in db.RunData.Include("Runs").in where RunData.id == id select RunData).First(); 
     return View(rundata); 
    } 

が、私はそれが実行のリストを返さないとトラブルのすべての種類を持っていませんでしたしかし、問題を解決した.Include( "Runs")を実行したときに、だから、私の問題は、DataLabels文字列配列です。私が試してみると、プログラムが失敗し、以下のように表示されます:

指定されたインクルードパスは無効です。 EntityType 'Program_Dataviewer.Models.RunData'は、 'DataLabels'という名前のナビゲーション プロパティを宣言しません。

私はオンラインでいくつか検索しましたが、明確な回答はありません。お手伝いありがとう。

+0

文字列[]の代わりにリストを使用しない理由はありますか? –

+0

@dtryon最初はリストを使っていましたが、ランダムなものを試してみると、それを配列に変更しました。したがって、リストも配列も機能しません。 –

答えて

1

各コレクションをリレーショナル・スペースの表にマップする必要があるため、データ・モデルにプリミティブのコレクションを入れることはできません(考えてみましょう - データベースがコレクションをどのように整理/保存するのか)。あなたができることはDataLabelsのテーブル/エンティティを導入することです。

public class RunData 
{ 
    [Key] 
    [Required] 
    public int id { get; set; } 
    public List<RunElement> Runs { get; set; } 
    public List<DataLabel> DataLabels { get; set; } 
} 

public class DataLabel 
{ 
    [Key] 
    public int id { get; set; } 
    public string LabelName { get; set; } 
} 
関連する問題