我只需要在Entity Framework中使用存储过程而不是Linq来生成嵌套的JSON。这是我想要创建的JSON
{
"quiz" : [{
"id" : 1,
"name" :"Guess Fruit Color",
"description": "You need to guess color of fruits",
"questions" : [
{"id" : 1000 , "quizId" : 1 , "description": "The color of apple is" , "options" : [
{"id" : 1 , "questionId" : 1000 , "description" : "Green", "correctAnswer" : false },
{"id" : 2 , "questionId" : 1000 , "description" : "Red", "correctAnswer" : true },
{"id" : 3 , "questionId" : 1000 , "description" : "Pink", "correctAnswer" : false },
{"id" : 4 , "questionId" : 1000 , "description" : "Purple", "correctAnswer": false }
]
},
{"id" : 1001 , "quizId" : 1 , "description": "The color of mangoss is" , "options" : [
{"id" : 5 , "questionId" : 1001 , "description" : "Green", "correctAnswer" : false },
{"id" : 6 , "questionId" : 1001 , "description" : "Red", "correctAnswer" : false },
{"id" : 6 , "questionId" : 1001 , "description" : "Yello", "correctAnswer" : true },
{"id" : 8 , "questionId" : 1001 , "description" : "Purple", "correctAnswer": false }
]
}
]}
]
}
我的存储过程只是返回平面数据,我不知道如何将其转换为分层数据。
ALTER PROCEDURE GetQuizDetails
As
SELECT
Quiz.Id,
Quiz.name,
Quiz.description,
--Questions
Questions.Id,
Questions.TriviaQuizId,
Questions.description,
--Options
Options.id,
Options.questionId,
Options.description,
Options.correctAnswer
FROM
dbo.TriviaQuizs as Quiz
JOIN dbo.TriviaQuestions as Questions on Quiz.id = Questions.TriviaQuizId
JOIN dbo.TriviaOptions as Options on Options.questionId = Questions.Id
我设计了类似
的课程public class TriviaQuiz
{
public int id { get; set; }
public string name { get; set; }
public string description { get; set; }
//A Quiz can have many questions
public virtual List<TriviaQuestion> questions { get; set; }
}
public class TriviaQuestion
{
[Key(), ForeignKey("triviaQuiz")]
public int id { get; set; }
public string description { get; set; }
//Navigation Property to set foreign key relationship
[JsonIgnore]
public virtual TriviaQuiz triviaQuiz { get; set; }
//A question can have many options
public virtual List<TriviaOption> options { get; set; }
}
public class TriviaOption
{
public int id { get; set; }
[ForeignKey("triviaQuestion")]
//Tell EF That questionId is a Foreign key to TriviaQuestion table
public int questionId { get; set; }
public string description { get; set; }
public Boolean correctAnswer { get; set; }
//Navigation Property to set up Foreign key relation ship
[JsonIgnore]
public virtual TriviaQuestion triviaQuestion { get; set; }
}
任何帮助和指示将不胜感激。提前致谢