2009-03-16 5 views
3

J'ai créé un modèle d'entité à partir d'une base de données et j'ai obtenu une erreur "les noms des membres ne peuvent pas être identiques à leur type". Ce qui signifie qu'il existe une propriété portant le même nom que la classe.Entity Framework Mapping Bizarrerie - les noms des membres ne peuvent pas être identiques à leur type englobant

Donc, l'erreur est ici

/// <summary> 
    /// There are no comments for Employee in the schema. 
    /// </summary> 
    [global::System.ComponentModel.BrowsableAttribute(false)] 
    [global::System.Runtime.Serialization.DataMemberAttribute()] 
    public global::System.Data.Objects.DataClasses.EntityReference<Employee> EmployeeReference 
    { 
     get 
     { 
      return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Employee>("HumanResourceModel.FK_EmployeeReferenceMapping_Employee", "Employee"); 
     } 
     set 
     { 
      if ((value != null)) 
      { 
       ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<Employee>("HumanResourceModel.FK_EmployeeReferenceMapping_Employee", "Employee", value); 
      } 
     } 
    } 

qui fait partie de

[global::System.Data.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName="HumanResourceModel", Name="EmployeeReference")] 
[global::System.Runtime.Serialization.DataContractAttribute(IsReference=true)] 
[global::System.Serializable()] 
public partial class EmployeeReference : global::System.Data.Objects.DataClasses.EntityObject 
{ 

je peux « corriger » cette erreur en renommant le nom de la propriété (mais cela entraînera des charges de questions le futur), mais comment est-ce corrigé à partir du code créé? J'ai renommé la clé étrangère en mappage mais cela n'a pas fonctionné.

Des idées?

Acclamations Sarkie.

+0

Que voulez-vous dire par « comment est que ce soit réglé à partir du code créé » exactement? Je ne suis pas sûr de ce que vous cherchez au-delà de renommer la propriété. –

Répondre

3

figured it out

Entity Framework: Loading Many to One entity

Parce qu'il ajoute Référence sur un grand nombre à un

Employee.Load() EmployeeReference.Load()

et depuis que j'ai une table EmployeeReference est mort sur son cul!

Fix = renommer le employeeReferenceTable

+0

L'habitude que j'ai dû faire était de nommer le nom du fichier Model légèrement différemment du nom de la table de la base de données source. Aucun conflit de nom plus. –

2

Ainsi, la classe en question est ...

Je sais que c'est un modèle Entity Framework et vous ne spécifiez pas dans le code, mais c'est essentiellement ce que vous avez créé, non?

Si tel est le cas, je ne vois pas d'autre moyen que de renommer la propriété ou l'objet, en raison du fonctionnement de EF. Ce n'est peut-être pas le système le plus sympathique au monde, mais les règles sont nécessaires avec la façon dont EF a été codé.

Je suis sûr que tout problème de changement de nom que vous avez avec la modification d'un nom ou d'un autre peut être surmonté. Si ce n'est pas le cas, envisagez une autre méthode d'accès aux données.

+0

Oui, en dehors de cela, c'est ce que EF a créé, mais EmployeeReference. Je peux l'éditer manuellement, j'essayais de comprendre comment il a fait le nom, ainsi je peux l'éditer dans la DB. – Sarkie

+0

La meilleure façon de voir ce qui se passe est de refléter les assemblages qui créent les choses autogérées. Reflector est maintenant un outil RedGate, mais il est toujours gratuit. Une douleur? Bien sûr, mais vous apprenez beaucoup. :-) –

Questions connexes