| 

.NET C# Java Javascript Exception

2
Hallo,

ich habe eine n:m Beziehung mit Payload, die ich wie folgt umgesetzt habe:

Material 1:n MaterialUsage n:1 Material

oder


MateialUsage.UsedIn * ---------- 1 Material.MaterialIsUsedIn
MateialUsage.MadeOf * ---------- 1 Material.MaterialIsMadeOf

Im Datensatz "MateialUsage" befinden sich noch Nutzdaten, die für die jeweilige Beziehung spezifisch sind, z.B. Anteil des verwendeten Materials.
Ziel war die Beziehung 'Ein Material kann aus n Materialien mit einem jeweiligen spezifischen Anteil bestehen und ein Material kann in beliebigen anderen Materialien verwendet werden'.

Die Rolle 'MaterialIsMadeOf' ist im EF DB Designer mit 'Cascading' OnDelete gekennzeichnet.
Die Idee war nun, sobald ich ein Material lösche, automatisch alle abhängigen MaterialUsage Records zu löschen. Leider laufe ich hier auf diesen Fehler

Eine Beziehung im AssociationSet 'MaterialMaterialUsage1' befindet sich im Zustand 'Deleted'. Angesichts der Multiplizitätseinschränkungen muss sich ein entsprechendes 'MaterialUsage'-Element ebenfalls im Zustand 'Deleted' befinden.

Das bezeichnete AssociationSet ist die Rolle "MadeOf" in einem MaterialUsage Record.

Allerdings habe ich keine 'Referenzielle Einschränkung' in der Rolle 'MaterialIsMadeOf' in Material definiert, da ich vermeiden wollte die Material-ID in MaterialUsage explizit aufzuführen.

Ist den dieser Verweis unbedingt notwendig oder habe ich sonst was falsch gemacht?
20.07.2011
mph 227 1 6
1 Antwort
2
Ich vermute, Du hast den Cascade-Delete erst nachträglich in die SQL-Datenbank eingefügt und dann über den Designer das Datenbankmodell aktualisiert. In dem Fall solltest Du mal in der Database.edmx mit einem Texteditor prüfen, ob der Cascade auch im CSDL-Teil eingetragen wurde.
21.07.2011
sgf 426 3
Leider nicht. Ich habe auch durch verschiedene Versuche das Problem reproduzieren können.
Immer wenn ich eine wie oben beschrieben Beziehung im Designer modelliere laufe ich auf das beschrieben Problem.
mph 21.07.2011
Kannst Du den Code posten, mit dem Du die Löschung druchführst? Bist Du Dir sicher, dass Du auch alle Enitities geladen hast, die Du löschen möchtest?
sgf 22.07.2011

Stelle deine .net-Frage jetzt!