Prévention des conflits de fusion EDMX et des problèmes de sélection de cerises

J'utilise Entity Framework comme ORM et j'essaie de find une solution aux problèmes majeurs que je rencontre. Permettez-moi de décrire la configuration de mon équipe pour quelque arrière-plan.

Nous utilisons SQL Server 2012 pour notre database, Visual Studio 2012 pour notre IDE, GIT pour notre contrôle de source et Entity Framework pour notre ORM. Dans notre contrôle de source, nous développons dans une twig appelée "maître". Nous avons une twig "staging" (utilisée pour les tests) et une twig "live" (c'est le code de production). Quand nous faisons un correctif, nous dérivons le dernier code en direct, le poussons à tester pour le tester, puis nous le poussons à vivre une fois qu'il est autorisé à entrer en production. Après que ce soit fait, nous fusionnons la twig du correctif dans la twig principale. Nous avons également eu des cas où le code qui est actuellement dans notre twig principale est sélectionné dans une twig de correctif et mis en ligne.

Dans tous ces cas, notre plus gros problème est le file EDMX. La chose est énorme avec des centaines de mappages de table et de proc. Nous sums à un point maintenant que nous ne pouvons avoir qu'un développeur à la fois utiliser le file EDMX parce que GIT ne peut pas gérer les conflits de fusion. En outre, les time que nous avons essayé de choisir notre twig principale en live, nous nous retrouvons avec un cauchemar de fusion EDMX.

Nous ne pouvons tout simplement pas continuer ainsi et nous ne pouvons certainement pas embaucher plus de programmeurs tant que nous n'aurons pas maîsortingsé notre ORM. Je suis sur le point maintenant où je considère l'utilisation d'un nouvel ORM comme ORMlite juste pour que je puisse me débarrasser du file EDMX. Quelqu'un at-il une expérience avec ce type de problème? Que peut-on faire pour éviter ces conflits de fusion et les problèmes de twigment? J'ai entendu une rumeur selon laquelle le file EDMX allait être supprimé dans EF6. Est-ce vrai?

Nous avons eu le même problème dans notre environnement. Une solution prometteuse consiste à passer à Entity Framework Code First (dans lequel vous écrivez le code, qui génère votre schéma de database) au lieu d'utiliser un file EDMX (dans lequel le code est généré à partir du schéma de database). Un gros avantage est que vous avez le plein contrôle des POCO et ne vous retrouvez pas avec un tas de code généré désordonné. Fusionner ceci est comme merge des classs C # normales et ne provoque pas le même mal de tête que la fusion d'EDMX.

Voici un outil qui convertira d'abord une implémentation EDMX existante en code: http://visualstudiogallery.msdn.microsoft.com/da740968-02f9-42a9-9ee4-1a9a06d896a2

Voici un bon résumé des différentes approches de EF, avec les avantages de chacun listé en bas: https://www.simple-talk.com/dotnet/.net-framework/different-approaches-of-entity-framework/

Mise à jour: Voici une autre technique qui simplifie les casse-têtes de fusion EDMX: supprimez le contenu du nœud <Diagrams> XML. Plus de détails ici: http://blogs.teamb.com/craigstuntz/2010/02/03/38542