2010-10-28 6 views
0

Je semble avoir des problèmes pour scinder un espace de noms entre projets.fractionnement d'un espace de noms entre projets

J'ai un projet DatabaseAccess qui a un dossier appelé SCS (Some Crazy System) qui fournit un accès aux données à la base de données pour SCS. Maintenant, ce SCS a des entités générées par le framework d'entité (.edmx). Je souhaite étendre ces entités dans mon projet BusinessModel. Cependant, je ne semble pas être capable de le faire. ci-dessous est mon exemple. Je crée une classe partielle et en créant un espace de noms avec le même nom que l'espace de noms dans mon projet de DatabaseAccess réelle:

namespace DatabaseAccess.SCS{ 
    public partial SomeEntity{ 
     public void DoSomething(){ 
      var x = this.GeneratedField; 
     } 
    } 
} 

Faire le précède ne fonctionne pas. Il se plaint que GeneratedField ne fait pas partie de la classe SomeEntity même si c'est le cas. Si j'ouvre le SCS.Designer pour edmx, SomeEntity a en effet une définition pour GeneratedField et SomeEntity fait partie de l'espace de noms DatabaseAccess.SCS. Ce qui donne?

Répondre

1

Vous n'êtes pas seulement en train de diviser l'espace de noms entre plusieurs projets, mais aussi la classe. Je doute que ce soit possible car il serait généralement très difficile de construire de tels objets car chaque objet a généralement de lourdes dépendances ... eh bien, lui-même! (Les méthodes d'extension pourraient fournir des fonctionnalités similaires - bien que je ne recommande pas de les utiliser de manière excessive.)

Pourquoi n'avez-vous pas cette partie dans le même projet que l'autre partie?

+0

vous avez raison. J'ai décidé de mettre le partiel dans le même projet. c'est mieux architecturalement aussi. – Riz

0

Si la classe partielle n'est pas dans le même projet, vous devrez ajouter une référence à l'assembly construit à partir de l'autre projet. Sinon, le projet local ne connaît pas déjà la classe pour l'étendre.