2013-04-14 8 views
6

Uso l'EF 4 nella mia applicazione web.Come risolvere EF: violazione di runtime potenziale della tabella

qui sono le mie tabelle rilevanti:

**AppToDomains_V1 ** 
GroupId uniqueidentifier 
AppGuid uniqueidentifier 

**Apps table** 
AppName nvarchar(50) 
AppGuid uniqueidentifier 
ClientAppID nvarchar(50) 
IsDeleted  bit 
CreatedDate datetime 
UpdatedDate datetime 

e la mia edmx:

http://ge.tt/17n6R2e/v/0?c

ottengo il seguente errore:

Error 2 Error 3002: Problem in mapping fragments starting at line 1565:Potential runtime violation of table AppToDomains_V1's keys (AppToDomains_V1.AppId, AppToDomains_V1.Domain): Columns (AppToDomains_V1.AppId, AppToDomains_V1.Domain) are mapped to EntitySet AppToDomains_V1's properties (AppToDomains_V1.AppId, AppToDomains_V1.Domain) on the conceptual side but they do not form the EntitySet's key properties (AppToDomains_V1.AppId, AppToDomains_V1.Domain, AppToDomains_V1.IsWhiteListed). D:\MaM\Server\MamAdmin\Dev\Admin 1.7\MaMDBEntityFramework\MaMModel.edmx 1566 15 MaMDBEntityFramework

Come posso risolvere questo?

D: \ MaM \ Server \ MamAdmin \ Dev \ Admin

1.7\MaMDBEntityFramework\MaMModel.edmx 1566 15 is:

 <EntitySetMapping Name="AppToDomains_V1"> 
     <EntityTypeMapping TypeName="MaMDBModel.AppToDomains_V1"> 
      <MappingFragment StoreEntitySet="AppToDomains_V1"> 
      <ScalarProperty Name="IsWhiteListed" ColumnName="IsWhiteListed" /> 
      <ScalarProperty Name="Domain" ColumnName="Domain" /> 
      <ScalarProperty Name="AppId" ColumnName="AppId" /> 
      </MappingFragment> 
     </EntityTypeMapping> 
     </EntitySetMapping> 
+0

C'è un motivo per cui le proprietà Dominio e IsWhiteListed sono impostate come Chiave entità? –

+0

Aggiungi uno screenshot della tua mappatura. Molto probabilmente avrai una risposta. La maggior parte degli utenti qui non andrà a scaricare il tuo modello e ad aprirlo in VS. –

+0

@RobG Puoi spiegare qual è la Chiave Entità? è la chiave primaria? In ogni caso la chiave primaria dovrebbe essere App-domain. Poiché dovrebbe esistere una volta al massimo. Come dovrei aggiustare ciò che suggerisci? –

risposta

14

So che questo è stato un momento molto tempo fa, ma è ancora rivelando sui motori di ricerca, quindi ecco l'affare.

L'errore 3002 indica che c'è una discrepanza tra il modello e il database effettivo rispetto alla chiave primaria per una tabella. Ad esempio, il database può avere solo un singolo campo ID come chiave primaria, ma nel modello ha due o più colonne contrassegnate come parte della chiave primaria. Quando ho avuto questo errore, il modello aveva contrassegnato tutti i campi chiave esterni non nulli come parte della chiave primaria, che non era corretta.

Per risolvere il problema, accedere al modello, individuare la tabella, evidenziare tutti i campi erroneamente contrassegnati come facenti parte della chiave primaria e modificare la proprietà "Chiave di entità" su falso. Ricompila e l'errore dovrebbe essere sparito.

Questo ha funzionato per me.

+0

Mi fa davvero risparmiare tempo ... – gTiancai

Problemi correlati