Index mit EF6 wird nicht richtig erstellt

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von KingLM97.

    Index mit EF6 wird nicht richtig erstellt

    Hallo,

    ich bastel gerade mittels EF6 und CodeFirst an einem MVC-Projekt herum. Derzeit habe ich folgendes Model:

    VB.NET-Quellcode

    1. ​Public Class Stempel
    2. <Key>
    3. <Index("Idx_Stempel", 1, IsUnique:=True)>
    4. Public Property ID As Integer
    5. <Required>
    6. <Index("Idx_Stempel", 2)>
    7. Public Property Gestempelt As Date
    8. <Required>
    9. <Index("Idx_Stempel", 3)>
    10. Public Overridable Property Mitarbeiter As Mitarbeiter
    11. <Required>
    12. Public Overridable Property Stempelstati As Stempelstati
    13. Public Property Dauer As Integer
    14. End Class


    Dort habe ich einen Index "Idx-Stempel" angelegt. Dieser wird auch angelegt, allerdings nicht korrekt :D
    Es wird nur die Spalte "ID" und "Gestempelt" mit dem Index versehen, aber nicht die Spalte "Mitarbeiter". Was mache ich falsch?

    Evtl. noch das entsprechende Mitarbeiter-Model:

    VB.NET-Quellcode

    1. ​Public Class Mitarbeiter
    2. <Key>
    3. <Index(IsUnique:=True)>
    4. Public Property ID As Integer
    5. <Required>
    6. Public Property Anmeldename As String
    7. <Required>
    8. <DataType(DataType.Password)>
    9. <MinLength(6, ErrorMessage:="Das Passwort muss mindestens sechs Zeichen lang sein!"), MaxLength(32)>
    10. Public Property Passwort As String
    11. <MaxLength(75)>
    12. Public Property Vorname As String
    13. <MaxLength(75)>
    14. Public Property Nachname As String
    15. <Required>
    16. Public Property Aktiv As Boolean
    17. <Required>
    18. Public Overridable Property Stempel As ICollection(Of Stempel) = New HashSet(Of Stempel)
    19. <Key>
    20. Public Overridable Property Rolle As Rolle
    21. <NotMapped>
    22. <Required>
    23. Property RolleID As Integer
    24. End Class


    Bin über jeden Tipp dankbar! :)
    Bilder
    • {92CDDEA0-ED04-456D-AC08-8672E66A2ADA}.png.jpg

      34,31 kB, 704×286, 47 mal angesehen
    Hallo

    KingLM97 schrieb:

    Es wird nur die Spalte "ID" und "Gestempelt" mit dem Index versehen, aber nicht die Spalte "Mitarbeiter". Was mache ich falsch?

    Ich kann da falsch liegen aber ich gleube auf eine Navigationeigenschaft kannst du keinen Index setzen.

    Proiers mal bitte so:

    VB.NET-Quellcode

    1. Public Class Stempel
    2. <Key>
    3. <Index("Idx_Stempel", 1, IsUnique:=True)>
    4. Public Property ID As Integer
    5. <Required>
    6. <Index("Idx_Stempel", 2)>
    7. Public Property Gestempelt As Date
    8. <Index("Idx_Stempel", 3)>
    9. Public Overridable Property MitarbeiterId As Integer
    10. <Required>
    11. Public Overridable Property Mitarbeiter As Mitarbeiter
    12. <Required>
    13. Public Overridable Property Stempelstati As Stempelstati
    14. Public Property Dauer As Integer
    15. End Class


    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Danke, hat soweit funktioniert!

    Was mir gerade noch aufgefallen ist, er legt mir einen Index auf Stempelstati an, obowhl ich dort keinen Angelegt habe?
    Bilder
    • {92CDDEA0-ED04-456D-AC08-8672E66A2ADA}.png.jpg

      41,71 kB, 650×211, 41 mal angesehen

    KingLM97 schrieb:

    er legt mir einen Index auf Stempelstati an

    Puhh, so fit bin ich nicht mehr bei EF6, schon länger her. aber ich glaube das er für eine Navigationseigenschaft intern eine Shadowed-Property mit der ID anlegt. Kann sein das er meint diese sollte sowieso einen Index bekommen.

    aber Nagel mit bitte nicht fest darauf - sicher bin ich mir jetzt nicht. Für anderen Navi-Eigenschaften legt er die nicht an?

    Grüße
    sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    KingLM97 schrieb:

    Dann hat sich alles meiner Meinung nach geklärt

    Super! Das freut mich. aber die nächsten Fragen bez. EF sitzen sicher bereits in der Startlöchern vermute ich fast :saint:

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Korrekt, ein paar Fragen werden noch kommen und habe ich schon parat.
    In naher Zukunft möchte ich zBsp bei Fremdschlüsseln "SET NULL" statt "CASCADE" haben, das geht wohl mit dieser Fluent API...