2009-03-16 12 views
3

Ich habe ein Entity Model aus einem DB erstellt, und einen Fehler erhalten "Membernamen können nicht die gleichen wie ihre umschließenden Typ sein". Das bedeutet, dass eine Eigenschaft denselben Namen wie die Klasse hat.Entity Framework Mapping Oddity - Membernamen können nicht identisch sein mit ihrem einschließenden Typ

So ist der Fehler hier

/// <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); 
      } 
     } 
    } 

die

Teil ist
[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 
{ 

kann ich „reparieren“ diesen Fehler, indem Sie den Namen der Eigenschaft umbenennen (aber dies führt dazu, dass viele Probleme in die Zukunft), aber wie wird das aus dem erstellten Code behoben? Ich habe den Fremdschlüssel in Mapping umbenannt, aber das hat nicht funktioniert.

Irgendwelche Ideen?

Prost Sarkie.

+0

Was meinst du mit „wie ist das aus dem erstellten Code fixiert“ genau? Ich bin mir nicht sicher, wonach Sie suchen, abgesehen von der Umbenennung der Immobilie. –

Antwort

3

es Figured

Entity Framework: Loading Many to One entity

aus Weil es anhängt Referenz auf eine viele zu einer

Employee.Load() EmployeeReference.Load()

und da ich eine Tabelle EmployeeReference es starb auf seinem Arsch!

Fix = benennen Sie die employeeReferenceTable

+0

Die Angewohnheit, die ich machen musste, war, den Modelldateinamen etwas anders als den Namen der Quellendatenbank zu benennen. Kein Namenskonflikt mehr. –

2

So ist die Klasse in Frage ...

Ich weiß, das ein Entity Framework-Modell ist und geben Sie an, es nicht im Code, aber das ist im Wesentlichen, was Sie geschaffen haben, nicht wahr?

Wenn ja, sehe ich keine andere Möglichkeit, als die Eigenschaft oder das Objekt umzubenennen, aufgrund der Art, wie EF funktioniert. Es ist vielleicht nicht das freundlichste System der Welt, aber die Regeln sind mit der Art und Weise, wie EF kodiert wurde, notwendig.

Ich bin sicher, dass jedes Umbenennen Problem, das Sie mit dem Ändern des einen oder anderen Namen haben, überwunden werden kann. Falls nicht, sollten Sie eine andere Datenzugriffsmethodologie in Erwägung ziehen.

+0

Ja abgesehen davon, was EF erstellt hat, aber EmployeeReference. Ich kann es manuell bearbeiten, ich habe versucht herauszufinden, wie es den Namen gemacht hat, damit ich es in der DB bearbeiten kann. – Sarkie

+0

Der beste Weg, um zu sehen, was vor sich geht, ist das Reflektieren der Assemblys, die das autogene Material erzeugen. Reflektor ist jetzt ein RedGate-Tool, aber es ist noch frei. Ein Schmerz? Klar, aber du lernst so viel. :-) –

Verwandte Themen