Мы недавно обновили наше программное обеспечение до .NET 4.0 и EF 4.0 (без объектов самоконтроля) (ранее .NET 3.5 SP1).Теперь в прежнем рабочем коде возникает новое исключение, которое мы не понимаем.
У нас есть сущность с именем Resident и другая сущность с именем ResidentExtension, которая расширяет и без того большой объект Resident с 1 до (0 /1) отношения.Следующий код c # создает новую сущность в нашем приложении:
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,
};
Следующее исключение возникает непосредственно после этого оператора:
Нарушено ограничение множественности.Роль ResidentExtensions отношения VOCURA.EntityDataModels.EvocuraCarehomeManagementEntityModel.FK_ResidentExtensions_Residents 'имеет кратность 1 или 0..1.
Это происходит в установщике сгенерированного кода:
[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;
}
}
1014 * Единственное решение, которое я нашел, - это сначала отправить объект-резидент без расширения, а затем создать ResidentExtension с установкой внешнего ключа (ResidentID), добавить его в контекст и снова отправить.Но это не так, как раньше.
Кто-нибудь знает, как заставить эту работу снова работать по-старому?