Я пытаюсь разработать очень простой веб-API ASP.net core 2.0. Он содержит два модельных класса: категории и подкатегории. Тем не менее, когда я вызываю CategoriesController как:
http://localhost:51242/api/categories
... все дети Подкатегории нулевые.
[
{
"id":1,
"en":"Sports",
"de":"Sports",
"fr":"Sports",
"it":"Sport",
"es":"Deportes",
"shown":0,
"subcategories":null,
"subscribers":0
},
{
"id":2,
"en":"Computers",
"de":"Computers",
"fr":"Computers",
"it":"Computers",
"es":"Computadoras",
"shown":0,
"subcategories":null,
"subscribers":0
}
]
Когда я заполняю базу данных (UseInMemoryDatabase), я вижу, что категории DbSet содержат все подкатегории, присутствующие в файле json, используемом для заполнения (см. Изображение). Так что я не уверен, что это происходит? Я что-то пропустил?
Я новичок в ядре ASP.net, это мое первое приложение :-)
[Produces("application/json")]
[Route("api/Categories")]
public class CategoriesController : Controller
{
private readonly NetAdContext _context;
public CategoriesController(NetAdContext context)
{
_context = context;
}
// GET: api/Categories
[HttpGet]
public IEnumerable<Category> GetCategories()
{
return _context.Categories;
}
}
public class Category
{
public long Id { get; set; }
public string En { get; set; }
public string De { get; set; }
public string Fr { get; set; }
public string It { get; set; }
public string Es { get; set; }
public long Shown { get; set; }
public List<Subcategory> Subcategories { get; set; }
}
public class Subcategory
{
public long Id { get; set; }
public string En { get; set; }
public string De { get; set; }
public string Fr { get; set; }
public string It { get; set; }
public string Es { get; set; }
public long Shown { get; set; }
public long Subscribers { get; set; }
public long CategoryId { get; set; }
public long LocationId { get; set; }
}
NetAdSeed вызывается из Program.cs
static public class NetAdSeed
{
public static void Initialize(NetAdContext context)
{
context.Database.EnsureCreated();
// Seed categories and subcategories
if (context.Categories.Count() == 0)
{
// Load list of categories and subcategories from file to string
string json = System.IO.File.ReadAllText(@".\json\categories.json");
// Deserialize
List<Category> cats = JsonConvert.DeserializeObject<List<Category>>(json);
context.Categories.AddRange(cats);
context.SaveChanges();
}
}
}
public class NetAdContext : DbContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Subcategory> Subcategory { get; set; }
public NetAdContext(DbContextOptions<NetAdContext> options)
: base(options)
{
}
}