Ich habe einen Entitätstyp namens Image, der von Publikation erbt (es gibt 5 andere Arten von Publikationen, alle haben 10 gemeinsame Eigenschaften).Tabellenaufteilung eines geerbten Entitätstyps?
Leider enthält die Image-Tabelle in meiner Datenbank 4 binäre Spalten mit den Daten für 4 Versionen des Bildes bei unterschiedlichen Auflösungen, also gibt es 4 Eigenschaften des EF-Image-Typs: BinOriginal, BinHiRes, BinLowRes, BinThumbnail sehr große Datenmengen.
Dies beeinträchtigt die Leistung. Ich möchte nicht alle Binärdaten erfassen, wenn ich beispielsweise nur eine Reihe von Bildverknüpfungen erzeuge.
Also habe ich Tischspalt versucht, die vier binäre Felder in eine neue Imagefile Einheit platzieren a la: http://blogs.msdn.com/b/adonet/archive/2008/12/05/table-splitting-mapping-multiple-entity-types-to-the-same-table.aspx
ich die richtige Tabelle-Mapping sichergestellt haben, hinzugefügt, um die 1-1 Vereinigungs- und enthalten die Verweisbeschränkung, aber ich diesen Fehler:
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.
... es scheint, dass die Tabelle, die geteilt es ein Problem gibt in einer Vererbungsbeziehung beteiligt.
Ich habe versucht, die neue Imagefile EF Art von Veröffentlichung zu erben, aber dann bekomme ich einen Fehler:
Problem in mapping fragments starting at lines 2332, 2374:Two entities with
different keys are mapped to the same row
FRAGE Gibt es eine Möglichkeit, um dieses, oder wie die Tatsache, dass ich das Bild brauchen Der EF-Typ, der von der Publikation erbt, schließt die Trennung der anderen Felder in einen neuen Typ aus.
Können Sie das Datenbankschema ändern? I.e. eine separate Tabelle für die Bilder erstellen? –
Ja, das habe ich jetzt als "Workaround" gemacht (es ist eigentlich ein besseres DB Design, aber es war viel mehr Arbeit, da die DB bereits in Produktion ist). Meine Frage nach Tischzerlegung steht immer noch - es ist immer noch ein Aspekt von EF, den ich verstehen möchte. Wenn Sie überprüfen/dokumentieren können, dass es einfach nicht möglich ist, eine Tabelle, die ein Untertyp in einer Vererbungsbeziehung ist, zu teilen, reicht das aus, um eine Antwort zu akzeptieren. – Faust
OK, verstanden, aber ich bin mir nicht sicher, ob ich in das vertiefen werde :). –