2012-12-14 12 views
5

私は、Visual Studioでエンティティフレームワークwizzardを使用してdbモデルを作成しました。 stocktype2jobテーブルでは、2つのテーブル(ジョブ、在庫タイプ)が互いに関連しています。ジョブオブジェクトとEntity Framework - ナビゲーションプロパティを作成

enter image description here

Job <------- no direct relation/navigation property --------> StockType 
|                 | 
|                 | 
---------------------> StockType2Job -----------------------------> 

、私はこのような何かを行うことができます...

うまく動作するはずです
EntitiesObject db = new EntitiesObject(); 
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40); 

List<StockType> stockTypes = new List<StockType>; 
foreach (StockType2Job st2j in job.StockType2Jobs) 
    { 
     stockTypes.add(st2j.StockType); 
    } 

。しかし、私はこれのようなものを書くことができるので、仕事のエンティティでナビゲーションプロパティを作成する方法はありますか?あなたの親切なヘルプ

EntitiesObject db = new EntitiesObject(); 
Job job = db.Jobs.SingleOrDefault(j => j.IdJob == 40); 

List<StockType> stockTypes = job.StockTypes; // <<----- 

おかげで アポ

答えて

2

を支援ナビゲーションプロパティjob.StockTypesとの関係。だから、job.StockType2Jobs経由でStockTypeを収集することはできません。しかし、それは大したことではないのです。

List<StockType> stockTypes = job.StockType2Jobs.Select(x => x.StockType); 

あなたは、マッピングされていないプロパティjob.StockTypesでこれをラップするために誘惑されるかもしれませんが、通常はこれを行うには良い考えではありません。

1

このような何かを試してみてください:

var stocksTypes = from st in db.StockType 
    from stj in st.StockType2Job where stj.Job.IdJob==40 select st; 
  • このコードは、それだけでテーブルの「参加」する新しいナビゲーションプロパティを作成されていません。私はStockType2Jobsテーブルが正当な理由のために存在することを納得させます。

EFとのN対N関係をどのように扱うかを見ておくことをお勧めします。

いくつかのリンク[1][2]

ホープあなたが多く、多くをマッピングすることはできませんのでStockType2Jobsは、StockTypeと仕事への外部キーを含まないだけでなく、(自己参照)から明らかである

+0

これはうまくいくことは間違いありませんが、より洗練された方法があるのにlinqを使いたくないのですが、とにかくthxです! –

関連する問題