I've just finished reading Scott Wlaschin's excellent book "Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#" in which he uses the F# SQL type provider for the database access.
Anticipating the obvious question, he says (p260) not to use an ORM because you can't ensure the integrity of the domain that way. For example, an ORM can't validate an email address, etc, can't deal with nested choice types, etc.
However, earlier on in the book (can't find it offhand, so I hope I quote him correctly), when explaining how to create boundaries for each section of the workflow, he says that data should be validated at each section boundary, allowing the code within the section to assume it's all valid.
If so, why not treat the entities coming out of the ORM and into your code as crossing a boundary, and validate them there? That way, you get the benefits of the ORM, but ensure the integrity of your model.