Oui, c'est effectivement. Vous pouvez fournir un fichier de mappage lorsque vous instantiante un DataContext comme ceci:
var dataContext = new DataContext("connectionstring", entity.map);
Ce fichier peut être généré automatiquement avec SqlMetal.exe:
sqlmetal /server:servername /database:databasename /context:nameofdatacontext /Map:Entity.Map /code:Entity.code
Donc, si vous vous en tenez à la convention pour nommer les propriétés les même dans db et je enties, vous serez en cours d'exécution.
En outre, vous pouvez utiliser des modèles T4 pour générer votre datacontext, en générant également le fichier dbml.
J'ai créé un fichier .bat, que j'exercerai de l'explorateur de solution avec powershell.exe, que
- fonctionne SqlMetal.exe avec le paramètre carte
- fonctionne SqlMetal.exe avec dbml paramètre
- et exécute TextTransform.exe sur mon modèle T4 qui génère mon datacontex.
Mais vous devriez probablement utiliser EntitySet<T>
et EntityRef<T>
dans votre entité si vous ne voulez pas la fonctionnalité normale manque comme lazyload. Cela signifie évidemment que vous n'aurez pas de POCO propres, mais si vous pouvez vivre avec cela, c'est un compromis assez petit.