Thank you for your feature suggestions.
Here is our feedback on them:
Scenario 1: Handle Inserts, deletes and updates in single service method and in single transaction.
I have added a new feature request in out Public Feedback Portal:
Scenario 2: Business rules that validate security permissions and referential integrity.
How do you imagine this implemented using generic code generation? If you say it is business logic I do not believe any wizard will be able to capture easily the specific rules and make any sensible decisions based on that. If Scenario 1 gets implemented you should be able to add the required business rules in the service/repository implementation itself. Also OpenAccess will prevent you to delete any entities that will violate the referential integrity of your data by throwing a relevant exception.
Scenario 3: Know when parent entities have children and cannot be deleted.
You can already implement this following the guidance in this article. You can either check if any children are present in the collection property or if you don't want to transfer additional data over the network you can add a new boolean property (HasChildren or CanBeDeleted) that is calculated in the Assembler method.
Scenario 4: Apply changes in single table to the already generated by Add OpenAccess Service wizard code
There is already such feature request and you can vote for it to show your support:
Scenario 5: Smart updating of CRUD methods and special treatment of custom methods.
I believe this can be merged with Scenario 4. In order to avoid your customizations to be overwritten you should always use partial classes to extend the generated code. Finding which generated methods have been modified parsing the source code is extremely hard and I doubt that we will ever implement such algorithm.
My advice how to proceed with the current feature of the wizard will be to use it as starting point of building the service layer once and then manually extending and updating/maintaining the generated code to match your requirements.
I cannot give you any timeframe for implementation of the features that you have requested.
My suggestion how to implement the business layer will be to put it on top of the generated repositories layer. The business layer should control the translation from Entity to EntityDto types and back, do the validation of incoming data and control the size of the graph of objects that is transferred between the client and the server. Introduction of the business layer should lead to modifications to the Service layer only.
All the best,
the Telerik team