I have just started to investigate Microsoft’s Entity Framework (EF) with a view to replacing our existing Linq2Sql data access library.
Whilst following some of the sample projects I came across the ‘Add Code Generation Item’ (context menu on the designer surface), specifically the ‘EF 5.x DbContext Generator’ template.
This template generates some nice simple (POCO) class objects for the model.
In my overall structure, I would like to extract/move these classes into a different project/assembly so that I can reference them from a generic repository i.e. I want to decouple the application’s Data Access Layer from the EF entity data model.
Is this possible, or do I need to manually create a map for each class object (e.g. .ToDomainModel(), .FromDomainModel()).
Apologies if this is a stupid question – in my defence I am new to EF and also still getting to grips with the concept of the Data Driven Domain.
It is possible but you will lose part of the auto-magic. The auto-generated item is a T4 template. If you open it you will find somewhere at the beginning relative path to
.edmxfile. If you move the template you just need to update the path accordingly to point to the.edmxfile you want to use for generation.The disadvantage is that moving the template elsewhere will break automatic class regeneration when the
.edmxfile is saved (but I didn’t searched for the solution so maybe it is possible to make it work). Because of that you must manually run custom tool (item in .tt file context menu) after each saved change to EDMX file.