C# EF Code First: Generiertes Modell ignoriert Normalformen

Mike Lowrey

Commodore
Registriert
Juni 2005
Beiträge
4.978
Hallo zusammen,

ich habe gerade das Problem das Microsoft EntityFramework mir ein Modell generiert, welches jegliche Normalformen ignoriert und mir nicht gänzlich klar ist, wie ich dafür sorgen kann das dies anders gemacht wird.

Folgende Situation:

Code:
    public class User
    {

        [Key]
        public int UserId { get; set; }
        [Required]
       
        public string GivenName { get; set; }
        [Required]
    
        public string Surname { get; set; }
        [Required]
       
        public string MailAddress { get; set; }
        [Required]
  
        public string PhoneNumber { get; set; }

            [Required]
        public string UserName { get; set; }

        //SHA512Hashed

        private string _password = null;
        public string Password
        {
            get
            {
                return _password;
            }
            set
            {
                _password = getSHA512Hash(value);
            }
        }
        
        public virtual ICollection<CalendarEntry> CalendarEntries { get; set; }
        public virtual ICollection<Calendar> Calendar { get; set; }
        public virtual ICollection<Group> Groups { get; set; }
        public virtual ICollection<Invite> Invites { get; set; }
}

 public class CalendarEntry
    {
        public CalendarEntry()
        {
            Invitees = new List<User>();
        }
        public virtual ICollection<User> Invitees { get; set; }


        public bool IsEmpty
        {
            get
            {
                if (Invitees.Count == 0)
                {
                    return true;
                }
                return false;
            }
        }


        [Key]
        public int CalendarEntryId { get; set; }
        [Required]
        public DateTime StartDate { get; set; }
        [Required]
        public DateTime EndDate { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
        public double Duration
        {
            get
            {
                return EndDate.Subtract(StartDate).TotalMinutes;
            }
        }        
        
        public virtual Owner { get; set; }
        public int? CalendarId { get; set; }
        public virtual Calendar Calendar { get; set; }
        public virtual Room Room { get; set; }
}

Das Problem ist folgendes:
Die User sollten eigentlich nur einmalig angelegt werden.
Und ich möchte mehr aus Bequemlichkeit als aus Bedarf im User Objekt eine Liste der Kalendareinträge haben (ich habe es ursprünglich weggelassen, dass funktioniert trotzdem nicht).
Eigentlich gehören die Kalendereinträge aber einem Objekt Kalender, die "Owner" Eigenschaft ist "zusätzlich".

Das Problem ist jetzt das er ein einfaches Feld KalenderEintrag der Tabelle User hinzufügt. Der Wert ist aber völlig nutzlos.
Am liebsten wäre es mir er würde einfach rausfliegen.
Alternativ eben das die Verbindung Owner_KalenderEintrag in einer eigenen Tabelle herstelle.

Gibt's dafür eine FluentApi Funktion.

Vielen Dank!
 
Niemand der was dazu sagen kann?
Irgendwie muss man doch ein vernünftiges Modell erzwingen können.
 
Über welchen Schlüssel hast du denn die beiden Tabellen verknüpft? Es muss ja soweit ich das verstehe eine 1:n Beziehung sein.
1 User kann mehrere Kalendereinträge haben.
Ich würde sagen wenn der Primärschlüssel UserID auch in der CalendarEntry-Tabelle drin wäre, könntest du eine 1:n Beziehung erstellen und der Generator würde dir auch ein korrektes Modell ausgeben.
 
Zurück
Oben