Смежный вопрос здесь .
В большинстве ORM, когда вы запускаете запрос к существующему контексту, он не возвращает данные, которые были изменены, так как объекты были впервые возвращены из базы данных. Он выдает запрос к БД, но любые изменения, внесенные в БД, не возвращаются, потому что контекст не хочет топать ваши объекты (обсуждение этого поведения в Linq to SQL смотрите здесь ) , Это хорошо для краткосрочных контекстов, использующих шаблон «Единица работы», но не так хорошо, если вы используете долгоживущие контексты.
Я пробовал Linq to SQL и Entity Framework, обе платформы предоставляют метод обновления, который позволяет вам указать аргумент enum для перезаписи существующего объекта в контексте, но это не будет поднимать новые записи (по крайней мере, без дополнительного запроса ) и, что более важно, не удалит объекты для записей, которые были удалены из БД.
Я знаю, что могу просто отбросить контекст и существующие объекты, но я не хочу этого делать, потому что объекты привязаны к другим элементам в приложении.
Существует ли ORM, который может обновлять объекты самыми последними данными для БД, добавлять объекты для вновь создаваемых объектов и удалять объекты для записей, которые были удалены из БД, в идеале эффективным способом (т. Е. Используя Столбцы версии MS SQL).