Ho un tipo di entità chiamata Immagine che eredita dalla Pubblicazione (ci sono altri 5 tipi di Pubblicazioni, tutte condividono 10 proprietà comuni).suddivisione tabella di un tipo di entità ereditata?
Sfortunatamente, la tabella Immagine nel mio DB include 4 colonne binarie con i dati per 4 versioni dell'immagine a risoluzioni diverse, quindi ci sono 4 proprietà del tipo di immagine EF: BinOriginal, BinHiRes, BinLowRes, BinThumbnail, che contengono quantità molto elevate di dati.
Ciò influisce sulle prestazioni. Ad esempio, non voglio prendere tutti i dati binari quando sto solo creando una serie di link di immagini.
Così ho cercato di ping-splitting, ponendo i 4 campi binari in una nuova entità ImageFile a la: http://blogs.msdn.com/b/adonet/archive/2008/12/05/table-splitting-mapping-multiple-entity-types-to-the-same-table.aspx
ho assicurato la corretta tabella di mappatura, ha aggiunto l'associazione 1-1 e comprendeva la vincolo referenziale, ma sto ottenendo questo errore:
Error 3033: Problem in mapping fragments starting at line 2731:EntitySets
'ImageFiles' and 'Publications' are both mapped to table 'Images'. Their primary
keys may collide.
... sembra che ci sia un problema in quanto la tabella di essere divisa è coinvolto in una relazione di ereditarietà.
Ho provato ereditare il nuovo tipo di ImageFile EF dalla pubblicazione, ma poi ho un errore:
Problem in mapping fragments starting at lines 2332, 2374:Two entities with
different keys are mapped to the same row
DOMANDA Esiste un modo per aggirare questo, o se il fatto che ho bisogno l'Immagine Il tipo EF da ereditare da Publication preclude la divisione degli altri campi in un nuovo tipo?
È possibile modificare lo schema del database? Cioè creare una tabella separata per le immagini? –
Sì: questo è quello che ho fatto ora come un "work-around" (in realtà è un progetto di DB migliore, ma era molto più lavoro dato che il DB è già in produzione). La mia domanda sulla divisione del tavolo è ancora valida - è ancora un aspetto di EF che voglio capire. Se è possibile verificare/documentare che non è possibile dividere una tabella che è un sottotipo in una relazione di ereditarietà, sarà sufficiente accettare una risposta. – Faust
OK, capito, ma non sono sicuro se approfondirò questo :). –