Yazılımımızı yakın zamanda .NET 4.0 ve EF 4.0'a (kendini izleme varlıkları olmadan) (eski .NET 3.5 SP1) güncelleştirdik. Şimdi, eski çalışma kodunda, anlamadığımız yeni bir istisna ortaya çıkıyor.EntityFramework 4.0: InvalidOperationExeception: Çarpıklık kısıtlaması ihlal edildi
Yerleşik olarak adlandırdığımız ve zaten büyük olan Yerleşik öğeyi 1 ile (0/1) arasındaki ilişkiyi uzatan bir başka varlığımız olan ResidentExtension adlı bir kuruluşumuz var. Aşağıdaki C# kodu bizim uygulamada yeni bir varlık oluşturur:
Residents resident = new Residents()
{
IsNewResident = true,
ResidentImage = Settings.Default.ResidentCardDefaultMaleImage,
IsActive = true,
ResidentCanBeDeleted = true,
ResidentExtensions = new ResidentExtensions(),
ResidentMasterDataState = EvoState.Error,
ResidentBasicDataState = EvoState.Error,
ResidentBenefactorsDataState = EvoState.Error,
};
şu istisna doğrudan bu ifadesinden sonra yükseltilir:
Çokluk kısıtlaması ihlal etti. VOCURA.EntityDataModels.EvocuraCarehomeManagementEntityModel.FK_ResidentExtensions_Residents 'ilişkisinin' ResidentExtensions 'rolünün çokluğu 1 veya 0.1'dir.
O oluşturulan kodun setter oluşur: ayar ile ResidentExtension yaratarak
[XmlIgnoreAttribute()]
[SoapIgnoreAttribute()]
[DataMemberAttribute()]
[EdmRelationshipNavigationPropertyAttribute("EVOCURA.EntityDataModels.EvocuraCarehomeManagementEntityModel", "FK_ResidentExtensions_Residents", "ResidentExtensions")]
public ResidentExtensions ResidentExtensions
{
get
{
return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ResidentExtensions>("EVOCURA.EntityDataModels.EvocuraCarehomeManagementEntityModel.FK_ResidentExtensions_Residents", "ResidentExtensions").Value;
}
set
{
((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ResidentExtensions>("EVOCURA.EntityDataModels.EvocuraCarehomeManagementEntityModel.FK_ResidentExtensions_Residents", "ResidentExtensions").Value = value;
}
}
henüz bulduk tek çözüm birinci uzantısı olmadan Yerleşik varlık sunacak ve bundan sonra yabancı anahtar (ResidentID) ve içeriğe ekleyerek tekrar gönderin. Ama bu daha önce çalıştığı şekilde değil.
Bu işi eski haline nasıl döndüreceğini bilen var mı?
Jan, bu sorunu sizin istediğiniz şekilde çözdünüz mü? –
Ne yazık ki değil. Sorunun son bölümünde bulunan çözümü kullanarak hala ( – JanW