Я пытаюсь создать простое приложение в WebApi со следующими классами.
Author
и Book
, Author
имеет следующие атрибуты.
public class Author
{
public int AuthorId{ get; set; }
public string Name { get; set; }
public virtual List<Book> Books { get; set; }
}
Book
имеет следующие атрибуты.
public class Book
{
public int BookId{ get; set; }
public string Title{ get; set; }
public virtual Author Author{ get; set; }
}
У меня есть контекст БД, который выглядит следующим образом
public class DatabaseContext : DbContext
{
public DatabaseContext() : base("dbCon")
{
Database.CreateIfNotExists();
Configuration.ProxyCreationEnabled = false;
}
public DbSet<Author> Authors { get; set; }
public DbSet<Books> Books { get; set; }
}
На мой взгляд, я пытаюсь показать всех авторов и связанные с ними книги. Это мой js
код.
function getData() {
$.ajax({
url: '/api/Author',
type: 'GET',
dataType: 'json',
contentType: 'application/json',
success: function (data) {
console.log(data);
showData(data);
}
});
}
function showData(data) {
var string = '';
$.each(data, function (i, a) {
string += '<h1>Question title: ' + a.Name + '</h1>';
$.each(q.Books, function (j, b) {
string += '<p>' + b.Title + '</p><br>';
});
});
$('.divclass').html(res);
}
Метод контроллера, который возвращает всех авторов с соответствующими книгами.
public List<Author> Get()
{
return db.Authors.Include(a => a.Books).AsNoTracking().ToList();
}
Когда я пытаюсь запустить проект, в моей консоли появляется ошибка.
Следующая ошибка говорит:
Граф объектов для типа 'System.Collections.Generic.List`1 [[WebApplication1.Models.Books, WebApplication1, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]]' содержит циклы и не может быть сериализован, если отслеживание ссылок отключено. И тип исключения - System.Runtime.Serialization.SerializationException.
Я использую код первой миграции для заполнения базы данных, и я знаю, что база данных не пуста. Как это исправить? А что не так?