Я знаю, что это старый вопрос, но я просто не могу заставить его работать и полюбить человеческое объяснение!Как правильно реализовать много к одной структуре в инфраструктуре сущности?
У меня есть четыре таблицы в моей базе данных и хотелось бы сделать только один вызов api, чтобы получить данные - таблицы представляют разные сущности, книги, статьи, случаи и уставы, мне нужна модель, называемая библиографией, которая тянет все это вместе.
Я пробовал следующее, но после добавления данных в таблицы и вызова этого контроллера я получаю 200 ok с данными [0].
Мои модели:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace PhDResourceManager.Models
{
public class Journal
{
public Journal() { }
[Key]
public int ID { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public string PublicationYear { get; set; }
public string PublicationName { get; set; }
public string PageNumber { get; set; }
public virtual Bibliography Bibliography { get; set; }
}
public class Book
{
public Book() { }
[Key]
public int ID { get; set; }
public string Author { get; set; }
public string Title { get; set; }
public string Edition { get; set; }
public string PublicationYear { get; set; }
public string PublisherName { get; set; }
public string PageNumber { get; set; }
public virtual Bibliography Bibliography { get; set; }
}
public class Case
{
public Case() { }
[Key]
public int ID { get; set; }
public string Parties { get; set; }
public string NeutralCitation { get; set; }
public string LawReportsCitation { get; set; }
public virtual Bibliography Bibliography { get; set; }
}
public class Statute
{
public Statute() { }
[Key]
public int ID { get; set; }
public string Title { get; set; }
public string Section { get; set; }
public string Year { get; set; }
public virtual Bibliography Bibliography { get; set; }
}
public class Bibliography
{
public Bibliography()
{
MyJournals = new List<Journal>();
MyCases = new List<Case>();
MyBooks = new List<Book>();
MyStatutes = new List<Statute>();
}
[Key]
public int ID { get; set; }
public virtual ICollection<Journal> MyJournals { get; set; }
public virtual ICollection<Case> MyCases { get; set; }
public virtual ICollection<Book> MyBooks { get; set; }
public virtual ICollection<Statute> MyStatutes { get; set; }
}
}
Мой контроллер:
namespace PhDResourceManager.Controllers
{
public class BibliographyController : ApiController
{
private PhDResourceManagerContext db = new PhDResourceManagerContext();
// GET: api/Bibliography
public IQueryable<Bibliography> GetBibliographies()
{
return db.Bibliographies;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool BibliographyExists(int id)
{
return db.Bibliographies.Count(e => e.ID == id) > 0;
}
}
}
Можете вы добавить код действия вашего контроллера? – CodeNotFound
Похоже, вам просто нужно 'Incude()' коллекции. –
Как мне это сделать, Герт? – anthonyhumphreys