Question

J'évalue l'utilisation de EF par rapport à un schéma existant. Le problème est que je ne parviens pas à configurer des associations entre des tables dont la clé étrangère n'est PAS la clé primaire de la table principale.

Par exemple, un toto peut avoir de nombreuses barres telles que définies (pardonnez le pseudocode):

table foo {
  int foo\_id pk,
  char(10) foo\_code,
  ...
}

table foobar {
  int bar\_id pk,
  char(10) bar\_foo\_code fk(foo.foo\_code),
  ...
}

Que manque-t-il pour pouvoir créer l'association foo_foobar , et donc une propriété de navigation Bars sur l'entité Foo ?

Était-ce utile?

La solution

Linq to entity ne prend pas en charge les clés étrangères qui ne pointent pas sur la clé primaire d'une table (voir le message de consignation 3). Linq to entités le traitera comme un champ normal sur une table. Vous ne pourrez pas accéder à l'entité à laquelle elle est liée.

Si vous avez un schéma existant, je vous recommande d'utiliser le générateur edm car cela créera le fichier EMDX, le code situé derrière et même le code d'affichage (qui peut être très volumineux). Si votre schéma existant est assez volumineux, consultez cette post , qui explique comment traiter les grands schémas.

Lorsque vous exécutez le générateur EDM, vous découvrez toutes les choses qui ne sont pas prises en charge.

En regardant un journal EDMGen2.exe précédent, nous avons reçu les types de messages suivants:

  1. Le type de données 'sql_variant' n'est pas
    supporté, la colonne 'ColumnName' dans la table 'TableName' était exclus.
  2. La table / vue 'nomTable' ne fonctionne pas avoir une clé primaire définie. La clé a été déduit et la définition a été créé en tant que table / vue en lecture seule
  3. La relation 'RelationshipName' a des colonnes qui ne font pas partie de la clé de la table sur le côté principal de la relation qui n'est pas pris en charge, le la relation a été exclue.

Nous avons également constaté que le projet Linq bloquait assez Visual Studio, car le fichier de code produit par EDM dépassait largement les 80 Mo.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top