Thank you for your interest in OpenAccess ORM.
First, let me pinpoint that we offer a wizard that automatically converts EF models to OpenAccess Domain Models. I think that it will be quite useful in your case.
To get to your question:
1) We offer two options for handling many-to-many relationships - you can map the join table as a separate Domain Class with two one-to-many relationships or you can simply use the navigational properties on both ends to express the relationship in your classes without having a class for the join table
2) One-to-one relationship is not directly supported, you can model such relations as one-to-many or as vertical inheritance between the classes, as described in the relevant Knowledge Base article.
3) Enum property types are supported by our Visual Designer and treated as the underlying value type by LINQ statements. You need to just create manually your enum and edit the selected property type in the designer.
4) When you make changes to the database through the OpenAccessContext, they are cached in memory and applied to the database when you call the SaveChanges() method. If you rollback the in-memory transaction by ClearChanges(), the database is not updated.
5) The navigation properties in OpenAccess ORM are fetched through lazy loading unless you specify explicitly that you want a collection to be loaded through Fetch Plans. However, filtering the collections while loading them for the first time is not supported. This means that you will either load the entire list of related objects or none of them.
6) Restricting the access to certain properties of OpenAccessContext exposed through a Data Service is possible with our product. If you need to configure such restriction, please revert back to us and we will explain in detail how to make the necessary changes.
I hope that information answers your questions. Do not hesitate to contact us for further details.
All the best,
the Telerik team