2016-11-08 3 views
1

私はASP.NET Coreアプリケーションを作成しており、データベースをEFCore DbContextにスキャフォールドしています。ScaffoldedデータベースからのNewtonSoft Jsonのシリアル化によるEFCore:読み込まれていないナビゲーションプロパティの無視

すべてのナビゲーションプロパティーは、public virtual ICollection<Type> NavProp { get; set; }と定義されています。スキャフォルダーは、エンティティコンストラクタ内で若干の初期化をNavProp = new HashSet<Type>()として追加します。

私はDbContextからデータを返すデータコントローラを持っている:return this.DbContext.MyData.First();

私は明示的に私のクエリに含まれていないナビゲーションプロパティをシリアル化するためのJSONシリアライザを避けることができる方法は?これにより、不要なデータの読み込みや参照のループが回避されます。

答えて

1

あなたは、あなたがあなたのクエリに含める必要はありませんそれらを転送したくない場合は...

問合せ必要な列だけなどのDTO(データ転送オブジェクト)に保存:

return this.DbContext.MyData.First().Select(x => new MyDataDto { Id = x.Id, Name = x.Name }); 

などDTOクラス:あなたが転送されているものを管理している。このアプローチでは

public class MyDto { 
    // All the properties you want to tranfer 
    public int Id { get; set } 
    public string Name { get; set; } 
    // your props... 
} 

+0

こんにちは、DTOを使用する以外の方法はありますか? – Dede

+0

私はそうは思わない。 – Daniel

関連する問題