Как обратиться к данным в Entity Framework

280
24 августа 2021, 04:00

В моем .Net Core приложении я хранил данные в классе DataService

public class DataService
{
    public List<Book> Books = new List<Book>()
    {
        new Book() { Id = 1, NumberOfPages = 30, AuthorId = 1, Title = "t1" },
        new Book() { Id = 2, NumberOfPages = 20, AuthorId = 1, Title = "t2" },
        new Book() { Id = 3, NumberOfPages = 10, AuthorId = 2, Title = "t3" },
        new Book() { Id = 4, NumberOfPages = 50, AuthorId = 3, Title = "t4" },
    };
    public List<Author> Authors = new List<Author>()
    {
        new Author() { Id = 1, Age = "58", Name = "Stephen King" },
        new Author() { Id = 2, Age = "70", Name = "Neil Stivenson" },
        new Author() { Id = 3, Age = "63", Name = "Shul Vern" },
    };
}

Но теперь хочу использовать Entity Framework и добавляю данные в базу. Установил MS SQL Management Studio и MS SQL Server. Таблицы создались, данные добавились

public static class DbInitializer
{
    public static void Initialize(ApplicationContext context)
    {
        context.Database.EnsureCreated();
        var authors = new Author[]
        {
            new Author { Age = "58", Name = "Stephen King" },
            new Author { Age = "70", Name = "Neil Stivenson" },
            new Author { Age = "63", Name = "Shul Vern" },
        };
        foreach (Author i in authors)
        {
            context.Authors.Add(i);
        }
        context.SaveChanges();
        // Аналогично для Books
    }
}

Но как теперь делать query и mutation в graphQL?

// Что подставлять вместо DataService?
public AppMutation(DataService data)
{
     Field<AuthorType>(
        "createAuthor",
        arguments: new QueryArguments(
            new QueryArgument<NonNullGraphType<AuthorInputType>> { Name = "author" }
        ),
        resolve: context =>
        {
            var author = context.GetArgument<CreateAuthorModel>("author");
            var author2 = new Author()
            {
                Id = data.Authors.Max(t => t.Id) + 1,
                Age = author.AuthorAge,
                Name = author.AuthorName
            };
            data.Authors.Add(author2);
            return author2;
        });
}

Edit1

public class ApplicationContext : DbContext
{        
    public ApplicationContext(DbContextOptions<ApplicationContext> options)
        : base(options)
    {
    }
    public DbSet<Book> Books { get; set; }
    public DbSet<Author> Authors { get; set; }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Book>().ToTable("Book");
        modelBuilder.Entity<Author>().ToTable("Author");
    }
}
Answer 1

Передавайте ваш контекст в нужный вам метод

public AppMutation(ApplicationContext data) {...}
READ ALSO
Вычисление координат в матрице

Вычисление координат в матрице

Есть 5x5 матрица квадратов в произвольной части экранаКак найти координаты (x, y) в центре каждого квадрата?

120
Передача данных из формы

Передача данных из формы

Передаю данные из первой формы во вторую Выдает ошибку: Ссылка на объект не указывает на экземпляр объекта

126
Как с помощью bash-скрипта проверить, не реплицируется ли база mysql еще куда-то?

Как с помощью bash-скрипта проверить, не реплицируется ли база mysql еще куда-то?

Очень желательно найти способ определения репликации mysql-базы на мастере с наиболее меньшим количеством прав к базеНужно учесть, что настройки...

211
Выбор элемента массива после нажатия php + jquery

Выбор элемента массива после нажатия php + jquery

В PHP создаётся массив $result5, в который записываются поля из базы данныхИмеются две кнопки, при нажатии на кнопку "Уже знаю" в jquery нужно выбрать...

97