2012-12-13 20 views
5

Mam prosty model danych Entity (przy użyciu VS2010), który poddałem inżynierii odwrotnej z prostej bazy danych SQL Server, która zawiera trzy niepowiązane tabele.Entity Framework - typ edm jest odwzorowany na więcej niż jeden

próbuję zapisać dane do bazy danych za pomocą następującego kodu:

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(); 

ale otrzymuję następujący wyjątek:

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

na następującej linii (base.AddObject) w projektanta .cs kod:

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

Czy ktokolwiek może doradzić, co mogę robić źle? Nie mam dużego doświadczenia z Entity Framework (to zawsze "po prostu działało" w przeszłości). Sądzę, że następnym krokiem może być odzwierciedlenie kodu EF, ale to będzie dość trudne, ponieważ debuguję na zdalnym komputerze, którego nie mam wielkiego zakresu do instalowania dodatkowego oprogramowania.

Dzięki

Rob.

+6

Zazwyczaj oznacza to, że istnieje inna klasa 'TEMP_LANDED_WHENTECH_OPTION_POSITION' w projekcie, nawet jeśli znajduje się ona w innym obszarze nazw. Może model został jakoś dwukrotnie wygenerowany? –

+0

To było to! W jakiś sposób musiałem wygenerować kopię pliku modelu. Wielkie dzięki Gert. –

Odpowiedz

1

Gert odpowiedział na to poprawnie - pojawiła się kolejna kopia pliku modelu.

0

prostu miałem podobny problem, oraz konkretną linię, która spowodowała, że ​​był:

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

Po powielany nazwa została ustalona wszystko działało w porządku.

Powiązane problemy