2012-12-13 12 views
5

Ich habe ein einfaches Entity-Datenmodell (mit VS2010), die ich aus einer einfachen SQL Server-Datenbank, die drei nicht verwandte Tabellen enthält, reverse entwickelt.Entity Framework - der Edm-Typ ist mehr als ein zugeordnet

Ich versuche, Daten in die Datenbank mit dem folgenden Code zu speichern:

var dbOptions = new ARC_WHENTECHModel.TEMP_LANDED_WHENTECH_OPTION_POSITION(); 

//first map fields required for standard di processing 
dbOptions.OPTION_POSITION_SOURCE_ID = webSvcOption.TDR + "_" + webSvcOption.CNTR + "_" + webSvcOption.CRV; 
dbOptions.INSERTED_DT = DateTime.Now; 
dbOptions.CURRENT_IND = "Y"; 

//now map the data we've pulled from the web service call 
dbOptions.CA = webSvcOption.CA; 
dbOptions.CDTP = webSvcOption.CDTP; 
dbOptions.CMD = webSvcOption.CMD; 
dbOptions.CNTR = webSvcOption.CNTR; 
dbOptions.CPP = webSvcOption.CPP; 
dbOptions.PDTP = webSvcOption.PDTP; 
dbOptions.SPR = webSvcOption.SPR; 
dbOptions.TDR = webSvcOption.TDR; 


context.AddToTEMP_LANDED_WHENTECH_OPTION_POSITION(dbOptions); 
context.SaveChanges(); 

aber ich bekomme die folgende Ausnahme:

An EdmType cannot be mapped to CLR classes multiple times. The EdmType 'RDLMServiceTier.TEMP_LANDED_WHENTECH_FUTURES_POSITION' is mapped more than once. 

in der folgenden Zeile (base.AddObject) im Designer .cs code:

[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")] 
public void AddToTEMP_LANDED_WHENTECH_OPTION_POSITION(TEMP_LANDED_WHENTECH_OPTION_POSITION tEMP_LANDED_WHENTECH_OPTION_POSITION) 
{ 
    base.AddObject("TEMP_LANDED_WHENTECH_OPTION_POSITION", tEMP_LANDED_WHENTECH_OPTION_POSITION); 
} 

Könnte jemand bitte beraten, was ich falsch machen könnte? Ich habe nicht viel Erfahrung mit Entity Framework (es hat immer "nur funktioniert" in der Vergangenheit). Ich denke, der nächste Schritt könnte darin bestehen, den EF-Code wiederzugeben, aber das wird ziemlich schwierig, weil ich auf einem entfernten Rechner debuggen muss, wo ich keinen großen Spielraum für die Installation zusätzlicher Software habe.

Danke

Rob.

+6

Dies bedeutet normalerweise, dass im Projekt eine weitere 'TEMP_LANDED_WHENTECH_OPTION_POSITION'-Klasse vorhanden ist, auch wenn sie sich in einem anderen Namespace befindet. Vielleicht wurde das Modell schon zweimal generiert? –

+0

Das war es! Irgendwie muss ich eine Kopie der Modelldatei erstellt haben. Vielen Dank Gert. –

Antwort

1

Gert hat das richtig beantwortet - es war eine weitere Kopie der Modelldatei vorhanden.

0

Ich hatte gerade ein ähnliches Problem, und die spezifische Linie, die es verursacht wurde:

[EdmComplexTypeAttribute(NamespaceName = "MyModel", Name = "MyDuplicatedClassName")] 

Sobald der duplizierten Name wurde behoben, alles hat gut funktioniert.

Verwandte Themen