Есть ли способ автоматического создания CRUD для EF Model (DB First в настоящее время) - PullRequest
1 голос
/ 22 апреля 2019

Я создаю приложение WPF, и у меня есть существующая БД, которую я хотел бы использовать, а НЕ пересоздавать. Я буду, если я должен, но я бы предпочел нет. БД является sqlite, и когда я позже добавляю ее к своим данным и создаю модель данных на основе БД, я получаю модель и контекст БД, однако нет никаких методов, созданных для CRUD или, например, .ToList (), поэтому я могу вернуть все предметы на столе.

Нужно ли создавать все это вручную или есть способ сделать это так же, как MVC может создавать леса?

Я использую VS 2017, WPF, EF6 и Sqlite, установленные с Nu-Get

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Чтобы ответить на вопрос в названии.

Нет.

Не существует метода щелчка по кнопке для создания пользовательского интерфейса, подобного MVC.

Если вы просто работаете с таблицей за раз, то можете создать общий репозиторий, который возвращает список для данной таблицы.Это не сэкономит вам много кода, но вы могли бы сделать это.

Если вы сделали так, чтобы он возвращал iQueryable, а не просто List, вы могли бы «связать» такой запрос.Запросы Linq не превращаются в SQL, пока вы не форсируете итерацию, и вы можете основывать один на другом критерии добавления, что выбрать и т. Д. Для гибкости.

В тексте вашего поста вы спрашиваете о методах чтения и записиданные.Похоже, это почти полностью не связано с другим вопросом, потому что это доступ к данным, а не пользовательский интерфейс.

"нет методов, созданных для CRUD или, например, .ToList (), поэтому я могу вернуть все элементы втаблица. "

Существуют методы, доступные в виде методов расширения LINQ.ToList () является одним из них, за исключением того, что обычно используются async await и ToListAsync.

Где и Select - другие методы расширения.

Вы будете писать любой слой модели, который предоставляет результатыхотя из них.

Мне не ясно, не знаете ли вы просто о linq или о чем, но вот пример запроса.

        var customers = await (from c in db.Customers
                               orderby c.CustomerName
                               select c)
                               .Include(x => x.Orders) //.Include("Orders") alternate syntax
                               .ToListAsync();

EF использует "отложенную загрузку" связанных объектов,that Include заставляет его читать Заказы для каждого клиента.

2 голосов
/ 22 апреля 2019

Entity Framework - это объектно-реляционный маппер

Это означает, что он будет сопоставлять ваши объекты C # с таблицами.

Каждый раз, когда вы создаете модель из bd, она создаетContext Класс, который наследует DbContext.в этом классе вы найдете все таблицы в DbSet<Tablename> Tablename{get; set;}.По сути, этот список содержит строки.операция, выполненная в этом списке, повлияет на БД при методе SaveChange.

Пример для CURD

    public DbSet<Student> Students { get; set; }
    //Create
        using (var context = new YourDataContext()) {

          var std = new Student()
           {
              Name = "Aviansh"
            };

             context.Students.Add(std);
             context.SaveChanges();
                    }//Basically saving it will add a row in student table with name field as avinash 

//Delete

     using (var context = new YourDataContext()) {

        var CurrentStudent=context.Students.FirstOrDefault(x=>x.Name=="Avinash")
        CurrentStudent.context.Students.Remove(CurrentStudent);
        context.SaveChanges();
}

Примечание: при SaveChanges изменение будет отражатьна Db

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...