2011-01-25 5 views
6

Pour obtenir le prototype d'un projet opérationnel le plus rapidement possible, j'ai utilisé LINQ to SQL pour la persistance des données..NET: Conversion de LINQ en SQL vers Entity Framework

Maintenant, le projet est plus mature et je rencontre des limitations de concurrence avec LINQ to SQL. Puisque ce n'est pas un ORM vrai, ni n'était destiné à une utilisation en entreprise, je voudrais remplacer tout le travail LINQ to SQL avec la persistance Entity Framework.

Qu'est-ce que cela implique? Est-ce que l'un de mes travaux LINQ to SQL peut être rééquipé pour EF? Est-ce que je vais devoir recommencer avec EF à partir de zéro? Où est-ce que je commence? Des liens ou des conseils utiles?

+3

"Comme ce n'est pas un vrai ORM, il n'était pas non plus destiné à une utilisation en entreprise" - Stackoverflow est construit en utilisant L2S - je dirais que c'est prêt pour l'entreprise! –

+1

Comme @geoff a dit, SO est construit sur L2S, donc il est certainement capable d'être utilisé dans l'entreprise. Ce qui pourrait être intéressant est ce que les limitations de concurrence que vous rencontrez dans; Il pourrait y avoir un point de vue offert ici qui peut vous aider à les aborder sans avoir à passer à un autre ORM en gros. – casperOne

+0

Ok.stackoverflow est construit en utilisant linq to sql et vous pouvez l'utiliser pour le projet d'entreprise. –

Répondre

3

De nombreuses personnes effectuent la même conversion. Il existe un modèle que vous pouvez utiliser pour faire la conversion ici http://blogs.msdn.com/b/efdesign/archive/2009/08/13/linq-to-sql-to-entity-framework-conversion-template.aspx

+1

Il n'est pas clair comment "beaucoup" de gens font cette conversion. Si vous faites défiler les commentaires, vous trouverez ceci: "Bien qu'il y ait eu un certain intérêt, jusqu'à présent, l'intérêt n'a pas été suffisant pour justifier un investissement supplémentaire dans ce projet ..." – DOK

+0

Cela ne fonctionne pas. – Thea

+0

Y a-t-il une version mise à jour de ce modèle?Il a 3 ans donc j'ai des doutes sur son utilisation. – Zack

1

Ceci est un problème assez difficile et l'une des principales raisons pour lesquelles je recommande aux gens d'éviter LinqToSql depuis un certain temps. Microsoft ne veut pas que les utilisateurs utilisent LinqToSql. Votre meilleur pari est susceptible de recommencer et réutiliser le code quand/si vous le pouvez (certaines de vos requêtes Linq peuvent traduire presque une pour une automatiquement, mais même ce n'est pas une chose sûre).

LinqToSql est un ORM vrai mais pauvre en fonctionnalités. LinqToSql peut et est utilisé dans l'entreprise par des personnes qui n'ont pas besoin de fonctionnalités ORM avancées.

Vous n'êtes probablement pas la seule personne qui suivra cette voie (en essayant de "passer" de LinqToSql à EntityFramework), mais il n'est pas clair à ce stade si le marché a besoin d'un bon outil pour supporter ce genre de la migration. Compte tenu de l'évolution de Microsoft en matière d'accès aux données tous les deux ans depuis plus d'une décennie, vous pouvez considérer NHibernate comme une alternative à Entity Framework (si vous vous inquiétez de Microsoft Entity Framework à LinqToSql).

0

Je doute qu'une sorte de conversion automatique est possible. Il y a peu de différences. Le pire est la façon d'appeler des procédures stockées avec des valeurs de retour scalaires. EntityFramework ne renvoie pas la valeur, mais le nombre de lignes affectées. Cela nécessite des modifications dans votre T-SQL. Cela ne peut être fait par aucun modèle. Certaines requêtes LINQ2SQL ne fonctionnent pas dans EntityFramework et doivent être modifiées. Il y a une différence agaçante dans la pluralisation. EF essaie d'être si intelligent. Table UserInfo est pluralize comme UserInfoes pendant L2SQL UserInfos. Table Les personnes sont pluralisées comme Poeple au lieu de Personnes. Vous devez donc également modifier cette pluralisation. Si vous utilisez un travail avancé avec des connexions (n'utilisez pas de chaîne de connexion), vous pouvez simplement le mettre à niveau. DBConnection n'est pas compatible avec EntityConnection. Vous devez également réécrire cette couche de votre application. Beaucoup de travail dur pour le modèle de conversion.

Questions connexes