Szukałem zasobów dotyczących sposobu deklarowania relacji klucza obcego i innych ograniczeń przy użyciu najpierw kodu EF 4.1 bez powodzenia. Zasadniczo buduję model danych w kodzie i używam MVC3 do zapytania tego modelu. Wszystko działa przez MVC, co jest świetne (brawa dla Microsoft!), Ale teraz chcę, aby NIE działało, ponieważ muszę mieć ograniczenia modelu danych.
Na przykład mam obiekt Order, który ma mnóstwo właściwości, które są obiektami zewnętrznymi (tabelami). W tej chwili mogę utworzyć zamówienie bez problemu, ale bez możliwości dodania klucza obcego lub obiektów zewnętrznych. MVC3 ustawia to bez problemu.
Zdaję sobie sprawę, że przed zapisaniem mógłbym po prostu dodać obiekty do klasy kontrolera, ale chciałbym, aby wywołanie DbContext.SaveChanges () zakończyło się niepowodzeniem, jeśli relacje ograniczeń nie zostały spełnione.
NOWA INFORMACJA
W szczególności chciałbym, aby wystąpił wyjątek, gdy próbuję zapisać obiekt Order bez określania obiektu klienta. Wydaje się, że nie jest to zachowanie, jeśli po prostu skomponuję obiekty zgodnie z opisem w większości dokumentacji Code First EF.
Najnowszy kod:
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; }
}
Oto błąd, który otrzymuję podczas uzyskiwania dostępu do widoku wygenerowanego przez VS dla pacjenta:
KOMUNIKAT O BŁĘDZIE
Atrybut ForeignKeyAttribute we właściwości „Patient” typu „PhysicianPortal.Models.Order” jest nieprawidłowy. Nie znaleziono nazwy klucza obcego „Parent” w typie zależnym „PhysicianPortal.Models.Order”. Wartość Nazwa powinna być listą oddzielonych przecinkami nazw właściwości kluczy obcych.
Pozdrowienia,
Guido