Ich habe nach Ressourcen gesucht, wie Fremdschlüsselbeziehungen und andere Einschränkungen mit Code zuerst EF 4.1 ohne viel Glück deklariert werden können. Grundsätzlich baue ich das Datenmodell in Code und verwende MVC3, um dieses Modell abzufragen. Alles funktioniert über MVC, was großartig ist (ein großes Lob an Microsoft!), Aber jetzt möchte ich, dass es NICHT funktioniert, weil ich Datenmodelleinschränkungen haben muss.
Zum Beispiel habe ich ein Order-Objekt, das eine Menge Eigenschaften hat, die externe Objekte (Tabellen) sind. Im Moment kann ich problemlos einen Auftrag erstellen, ohne jedoch den Fremdschlüssel oder externe Objekte hinzufügen zu können. MVC3 richtet dies problemlos ein.
Mir ist klar, dass ich die Objekte vor dem Speichern einfach selbst in die Controller-Klasse einfügen kann, aber ich möchte, dass der Aufruf von DbContext.SaveChanges () fehlschlägt, wenn die Einschränkungsbeziehungen nicht erfüllt wurden.
NEUE INFORMATIONEN
Daher möchte ich insbesondere, dass eine Ausnahme auftritt, wenn ich versuche, ein Bestellobjekt ohne Angabe eines Kundenobjekts zu speichern. Dies scheint nicht das Verhalten zu sein, wenn ich nur die Objekte zusammenstelle, wie in den meisten Code First EF-Dokumentationen beschrieben.
Letzter Code:
public class Order
{
public int Id { get; set; }
[ForeignKey( "Parent" )]
public Patient Patient { get; set; }
[ForeignKey("CertificationPeriod")]
public CertificationPeriod CertificationPeriod { get; set; }
[ForeignKey("Agency")]
public Agency Agency { get; set; }
[ForeignKey("Diagnosis")]
public Diagnosis PrimaryDiagnosis { get; set; }
[ForeignKey("OrderApprovalStatus")]
public OrderApprovalStatus ApprovalStatus { get; set; }
[ForeignKey("User")]
public User User { get; set; }
[ForeignKey("User")]
public User Submitter { get; set; }
public DateTime ApprovalDate { get; set; }
public DateTime SubmittedDate { get; set; }
public Boolean IsDeprecated { get; set; }
}
Dies ist der Fehler, den ich jetzt beim Zugriff auf die VS-generierte Ansicht für Patient erhalte:
FEHLERMELDUNG
Das ForeignKeyAttribute für die Eigenschaft 'Patient' vom Typ 'PhysicianPortal.Models.Order' ist ungültig. Der Fremdschlüsselname 'Parent' wurde für den abhängigen Typ 'PhysicianPortal.Models.Order' nicht gefunden. Der Name-Wert sollte eine durch Kommas getrennte Liste von Fremdschlüsseleigenschaftsnamen sein.
Grüße,
Guido