views:

116

answers:

2

I would like to make some changes to my EF4 edmx file without modifying the file itself, mainly so I don't loose all my changes if I regenerate the model from the database. I'm familiar with XSL and have seen references made to using it in conjunction with the edmx file. This sounds like a great solution, however I can't seem to find any documentation on how to actually set this up. Do you reference the style sheet from the edmx file or do you configure it to look at the template and then load the edmx file in somehow? Any resources on this are appreciated.

Clarification:

Specifically what I'm trying to do is modify the model so that several of the views act as tables with relations within the model, see here: http://blogs.msdn.com/b/alexj/archive/2009/09/01/tip-34-how-to-work-with-updatable-views.aspx

The issue I'll have in using that method is if I need to update the database and regenerate the model I'll have to go back and make all of those changes again, I was hoping there was a way to use xslt to make those changes to the views so they would not be removed when the model is regenerated.

A: 

I don't know anything about EF4 itself, but how about this: Suppose your original edmx file (regenerated from the db) is "A.edmx". When you give EF4 the name of the edmx file, give it a URL (if allowed) "http://localhost/B.edmx". Set up a simple web service (I don't mean SOAP but simple XML) that responds to this URL with the result of transforming A.edmx with your XSLT stylesheet.

Alternatively, avoid the web service part and have your application check the timestamp of B.edmx against A.edmx; if A is newer, or B doesn't exist, have it run an XSLT processor to transform A.edmx to B.edmx.

HTH. If that doesn't help, please give some more specifics.

LarsH
Thanks for responding I've tried to clarify what I'm trying to do above.
Graham
+3  A: 

"It's difficult to tell what is being asked here" ;)

What do you mean by "make some changes to my EF4 edmx file without modifying the file itself". Do you want to create a derived edmx from the original? If so, you need to be aware that C# code (= class definitions) is automatically generated during Save.

I worked on EF projects, and used XSLT to post-process edmx files and/or generate additional code. This was invoked either manually or from a batch file during build.

You can invoke the XSLT from a simple Powershell script using the .Net framework. My blog posts on EF (3.5) may help you to understand edmx processing.

devio
Thanks for replying, Attempted to clarify above.
Graham