I have a .dbml file which of course contains the auto-generated classes based on my tables.
I would however, like to extend them to my own classes. Typically I design such that each of my tables get their own namespace in their own folder containing all of their associated dao and service classes. So if I am dealing with a page that only has to do with ‘customers’ for instance, I can only include the customerNS.
But when using LINQ I seem to be unable to do this. I have tried removing a default namespace from the project, I have tried putting the .dbml file into it’s own folder with a custom namespace and then adding a ‘using’ statement, but no nothing works.
I also saw the Entity Namespace, Context Namespace, and Custom Tool Namespace properties associated with the .dbml file and tried setting all these to names x and trying ‘using x’ in my other class to allow me to extend partial classes, but it just doesn’t work.
Is this possible or do I have to keep all extended partial classes in the same namespace as the .dbml file?
If the types don’t have relations the answer is simple: use multiple dmbl files. If you need relations and you also want multiple namespaces read on.
You might be able to get this done with a T4 template file. In VS2010 there’s a template to create one (it’s called a generator template or something). For VS2008 you can find one on codeplex
The changes you’ll need to make to the standard template is you need to make sure that all properties use fully qualified names (because the related types are now in different namespaces). And for most control you can probably skip the namespace info from the generated classes (so you can define it in your partial classes).