Skip to content

Releases: Codout/Codout.Framework

Codout.Framework.EF 6.3.0

Choose a tag to compare

@cloviscoli cloviscoli released this 12 May 18:54
c90afc5

Fixed
EFRepository.SaveOrUpdate / SaveOrUpdateAsync decidiam insert vs. update via IEntity.IsTransient(), o que quebrava qualquer entidade que pré-atribuísse o Id no construtor (ex.: Id = Guid.NewGuid()). A entidade era marcada como Modified e o SaveChanges falhava ao tentar UPDATE em uma linha inexistente. Agora a decisão é feita inspecionando Context.Entry(entity).State e, para entidades Detached com chave atribuída, consultando o banco via Find / FindAsync.
SaveOrUpdateAsync deixou de bloquear a thread chamando Find síncrono; agora usa FindAsync e respeita o CancellationToken recebido.
Quando o SaveOrUpdate precisa atualizar uma entidade existente, os valores são copiados via Entry(existing).CurrentValues.SetValues(entity), preservando os OriginalValues (e portanto tokens de concorrência como [Timestamp]/RowVersion) trazidos do banco.
Changed
SaveOrUpdate em entidade já rastreada com estado Unchanged não força mais a transição para Modified. Confia no change tracker para detectar mutações. Consumidores que dependiam do "force full update" devem chamar Update(entity) explicitamente.
SaveOrUpdate em entidade Detached com chave não-default agora executa um roundtrip ao banco (Find / FindAsync) para distinguir insert de update. Em hot paths onde a intenção é conhecida, prefira Save(entity) ou Update(entity) para evitar a query.

v4.0.0

Choose a tag to compare

@cloviscoli cloviscoli released this 26 May 01:46
5822203

What's Changed

New Contributors

Full Changelog: https://github.com/Codout/Codout.Framework/commits/v4.0.0