2017-10-18 9 views
1

"Insumo"テーブルの息子である "Finalidade"テーブルがあります。次のコードでエンティティフレームワークでforeachの内部データベースフィールドを取得する

は:

var db = new ApplicationDbContext(); 
var model = db.Insumos; 

foreach (var register in model) 
{ 
    data.Custo = register.Finalidade.Descricao == "Revenda" 
     ? data.Custo 
     : data.Custo - data.CrdtIpi; 
} 

私は私の文字列に比較できるように、内側のフィールド「Finalidade.Descricao」の値を取得する必要があります。問題は、Insumoの息子であるため、すべてがnullになり、プログラムが動作しなくなるということです。

「登録」に「インクルード」を使用する方法がないため、必要な値を取得できません。

「register.Finalidade.Descricao」の値を取得するにはどうすればよいですか?

+0

また、ViewModelsを使用してLINQを使用して必要なものを構築することもできます。 [ここ](https://stackoverflow.com/questions/28093915/ef-gather-all-child-records-into-list-with-a-parent-member)を参照してください。 –

+0

私の解決策はあなたを支援できましたか? –

答えて

1

registerという名前のオブジェクトに.Include()を使用しないでください。 modelプロパティを初期化するときに使用できます。

// .ToList is optional 
var model = db.Insumos.Include(x => x.Finalidade).ToList(); 

あなたが達成しようとしているものを達成するためにeager loadingを使用する必要があります。

これが役立つ場合はお知らせください。

関連する問題