Объединение двух проектов ASP.NET с разными стратегиями создания кода Entity Framework (DbContext против ObjectContext) - PullRequest
0 голосов
/ 17 октября 2018

У меня есть два ASP.NET MVC Projects (с одной и той же БД и Entity Framework DB-first), и теперь я хочу объединить их.

Первый проект A был создан в 2012 году, и на прошлой неделе я обновил его с MVC 4.0 до MVC 5.2.6 и с EF 4.4 до EF 6.2.Он тратит много времени на его обновление, и теперь он работает.

НО проект-A использует Устаревший контекст объекта в качестве Стратегии генерации кода в Entity Framework.Второй проект-B является новым и использует T4 .

. Поэтому я изменил Стратегию генерации кода проекта-A на T4 исоздал шаблоны генерации кода (... .tt Файлы) для моей модели.

Теперь у меня есть некоторые ошибки, кажется, что EF (T4) больше не использует методы ObjectContext .Как мне это удалось?Я попытался внести изменения в контроллеры проекта A (как в другом более новом проекте B), например, AddObject -> Добавить, DeleteObject -> Удалить :

Старый код:

            if (PrGruppenExist.Count == 0) //Save
            {
                db.Pruefgruppen.AddObject(pruefgruppen);
                int id = pruefgruppen.ID;
                db.SaveChanges();
            }
            else //Edit
            {
                db.Pruefgruppen.Attach(pruefgruppen);
                db.ObjectStateManager.ChangeObjectState(pruefgruppen, EntityState.Modified);
                db.SaveChanges();
            }

Новый код:

            if (PrGruppenExist.Count == 0)
            {
                db.Pruefgruppen.Add(pruefgruppen);
                db.SaveChanges();
            }

            }
            else //Edit
            {
                db.Entry(pruefgruppen).State = EntityState.Modified;
                db.SaveChanges();
            }

Возможно, Entity Framework (T4) использует DbContext методов, и я должен заменить методы ObjectContext этим.

  1. Мои мысли верны?
  2. Как я могу управлять этими изменениями?Есть ли какой-нибудь Nuget-пакет, который может быть полезен?
  3. Если мне придется сделать это вручную, какие методы можно использовать для замены: AcceptAllChanges или Обновить
  4. У вас есть другие идеи, как я могу объединить два своих проекта в одно приложение?
...