Как перевести запрос с EntityState и значением из Entity Framework 5 на 6? - PullRequest
0 голосов
/ 29 апреля 2020

Я мигрирую систему из Entity Framework 5 на 6, и у меня есть следующий запрос:

item.Count(x => x.ID < 0 && ((EntityObject)x).EntityState == System.Data.EntityState.Added)

Элемент представляет значение из IGrouping между ID и сущностью. Я протестировал несколько решений, таких как:

context.ChangeTracker.Entries<EntityX>().Count(x => x.State == System.Data.Entity.EntityState.Added);

Однако, как вы можете видеть, он пропускает одно важное значение - идентификатор. Эта ситуация создает более сложную ситуацию, поскольку в других случаях я проверяю идентификатор и в аналогичных обстоятельствах.

Я не могу найти способ их объединения, поскольку они необходимы для завершения полной миграции. Есть идеи?

1 Ответ

0 голосов
/ 30 апреля 2020

Это мое текущее решение:

//Get entity to filter:
var entity = EntityX.ToList().Where(x => x.ID < 0);

//Get current values    
var entity_values = context.Entry(entity).CurrentValues;

//Filter using ChangeTracker from the context
int total = context.ChangeTracker.Entries<EntityX_Type>().Count(x => x.State == System.Data.Entity.EntityState.Added && x.CurrentValues == entity_values);

Может быть, кто-нибудь еще знает лучшее решение.

...