Member 11712712 Ответов: 1

Создание методов вставки и обновления с помощью entityframework


у нас есть таблица (а) с тремя столбцами в ней
один-это первичный ключ(а) (автоинкремент), а остальные два-внешние ключи(оба-автоинкремент).
я вставляю и редактирую на основе первичного ключа (автоинкремент) правильно ли это?
если нет, то как писать инструкции insert и update с помощью entity framework?

Что я уже пробовал:

public void InsOrUpdate(int id, int pid, int cId)
        {
            var cP = _uoW.Com.FindBy(CP => CP.Id == id).FirstOrDefault();
            if (cP != null)
            {
                cP.Id = id;
                cP.PId = pId;
                cP.CId = cId;
                _uoW.Com.Edit(cP);
            }
            else
            {
                cP=new Comp();
                cP.Id = id;
                cP.PId = pid;
                cP.CId = cId;
                _uoW.Com.Add(cP);
            }
            _uoW.SaveChanges();
        }

Maciej Los

Это работает? Если да, то это правильный оператор insert/edit для entity framework.
;)

Vincent Maverick Durano

возможно, это поможет: http://www.c-sharpcorner.com/article/entity-framework-basic-guide-to-perform-fetch-filter-insert-update-and-dele/

1 Ответов

Рейтинг:
1

Nathan Minier

Итак,у вас есть несколько вариантов. У меня есть совет по этому самому вопросу и надежный ответ:
Универсальный метод Entity Framework AddOrUpdate с поддержкой составного ключа[^]

Теперь, если все, что вам нужно, - это базовая поддержка одной таблицы, которая просто обновит пару значений, вы можете сделать следующее:

public void InsOrUpdate(int id, int pid, int cId)
        {
            var cP = _uoW.Com.Find(id); // DbSet.Find works really well
            if (cP != null) //there is no need to try and set the Id. We already have it.
            {
                cP.PId = pId;
                cP.CId = cId;
                _uoW.Entry(cP).State = EntityState.Modified; // Here's the secret sauce
            }
            else
            {
                cP=new Comp //the cool kids use object initializers
                {
                   Id = id;
                   PId = pid;
                   CId = cId;
                };
                _uoW.Entry(cP).State = EntityState.Added;
            }
            _uoW.SaveChanges();
        }


Karthik_Mahalingam

5