2017-07-26 10 views
0

私のデータベース(EntityFramework)から外部キーなしでJsonResultを使用してオブジェクトを送信すると、必要な結果が得られます。このオブジェクトがForeignKeyの関係が含まれている場合の関係は結果のJSONではありません。asp.net core:JsonResultで外部キーの関係を保持する

私は何を得る:私は必要なもの

{ 
    "agentId":"9990447f-6703-11e7-9c8b-94de80ab7fee", 
    ... 
    "configurationId": 22, 
    "configuration": null 
} 

{ 
    "agentId":"9990447f-6703-11e7-9c8b-94de80ab7fee", 
    ... 
    "configurationId": 22, 
    "configuration": { 
     "id": 0, 
     ... 
    } 
} 

私は維持するために何ができます私のjsonのこの外部キーの関係?

私はすでに次のように設定しようとしました:

services.AddMvc().AddJsonOptions(options => options.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.All); 

EFコンテキスト:

public class Agent 
{ 
    [Key] 
    public Guid AgentId { get; set; } 
    ... 
    public int? ConfigurationId { get; set; } 
    [ForeignKey("ConfigurationId")] 
    public Configuration Configuration { get; set; } 
} 

public class Configuration 
{ 
    public int Id { get; set; } 
    ... 
    public ICollection<Agent> Agents { get; set; } 
} 

コントローラー:

[HttpGet] 
public JsonResult Index() 
{ 
    var agentList = _databaseContext.Agents; 
    return new JsonResult(agentList); 
} 

答えて

1

をあなたはrelated data

をロードすることができます
[HttpGet] 
public JsonResult Index() 
{ 
    var agentList = _databaseContext.Agents 
            .Include(agent=> agent.Configuration) 
            .ToList();; 
    return new JsonResult(agentList); 
} 
+0

この「ちょっと」の作品は、私のJSONの設定オブジェクトを取得します。問題は、私はこれですべてのエージェントのリストではなく、最初のエージェントオブジェクトを取得することです。 –

+0

明確にするために、linqが複数のエージェントを返しますが、結果のjsonには1つしか含まれていないことがわかります。 –

+0

問題が見つかりました。 'PreserveReferencesHandling.All'はまだ必要ですか、インクルードが動作しません。私は 'PreserveReferencesHandling.Object'に変更しました。 –

関連する問題