İlk olarak EF 4.1 kodunu kullanarak yabancı anahtar ilişkilerini ve diğer kısıtlamaları nasıl bildireceğime dair kaynakları arıyordum. Temel olarak veri modelini kodda oluşturuyorum ve bu modeli sorgulamak için MVC3 kullanıyorum. Her şey harika olan MVC üzerinden çalışıyor (Microsoft'a şükürler olsun!) Ama şimdi çalışmamasını istiyorum çünkü veri modeli kısıtlamalarına ihtiyacım var.
Örneğin, harici nesneler (tablolar) olan bir ton özelliğe sahip bir Order nesnem var. Şu anda bir Sipariş oluşturabilirim sorun değil, ancak yabancı anahtarı veya harici nesneleri ekleyemeden. MVC3 bunu hiçbir sorun oluşturmaz.
Nesneleri kaydetmeden önce denetleyici sınıfına kendim ekleyebileceğimin farkındayım, ancak kısıtlama ilişkileri karşılanmamışsa DbContext.SaveChanges () çağrısının başarısız olmasını istiyorum.
YENİ BİLGİ
Bu nedenle, özellikle, bir müşteri nesnesi belirtmeden bir Sipariş nesnesini kaydetmeye çalıştığımda bir istisna olmasını istiyorum. Nesneleri yalnızca Code First EF belgelerinin çoğunda açıklandığı gibi oluşturursam, bu davranış görünmüyor.
En son 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; }
}
Bu, Hasta için VS tarafından oluşturulan görünüme erişirken şimdi aldığım hatadır:
HATA MESAJI
'PhysicianPortal.Models.Order' türündeki 'Hasta' özelliğindeki ForeignKeyAttribute geçerli değil. 'Parent' yabancı anahtar adı, bağımlı 'PhysicianPortal.Models.Order' türünde bulunamadı. Ad değeri, yabancı anahtar özellik adlarının virgülle ayrılmış bir listesi olmalıdır.
Saygılarımızla,
Guido