Скажем, у меня есть две очень базовые сущности:
public class Contact
{
public int Id { get; set; }
public ContactStatus ContactStatus { get; set; }
}
public class ContactStatus
{
public int Id { get; set; }
public string Description { get; set; }
}
Здесь нужно смоделировать то, что пользователь сможет создать несколько статусов контактов для целей классификации и связатьих к контактам.
Более того, в этой модели null
является возможным значением для ContactStatus
, что означает, что оно не было классифицировано.
СейчасЯ использую Fluent NHibernate. Я попытался сопоставить их как:
public class ContactStatusMap : ClassMap<ContactStatus>
{
public ContactStatusMap()
{
Table("contact_status");
DynamicUpdate();
Id(x => x.Id, "ID").GeneratedBy.Native().Not.Nullable();
Map(x => x.Description, "DESCRIPTION").Not.Nullable();
}
}
public class ContactMap : ClassMap<Contact>
{
public ContactMap()
{
Table("contact");
DynamicUpdate();
Id(x => x.Id, "ID").GeneratedBy.Native().Not.Nullable();
References(x => x.ContactStatus, "CONTACT_STATUS_ID").Nullable();
}
}
Теперь, когда я пытаюсь выдать одну Delete
на ContactStatus
, я получаю одну ошибку ограничения ForeignKey, предотвращающую удаление. Поведение, которое я хотел реализовать, заключается в том, что если ContactStatus
удаляется, то все связанные Contacts
просто имеют свойство ContactStatus
, установленное в ноль.
Я попытался реализовать это, добавив Nullable()
после References()
но это не сработало. Я все еще получаю ошибку ограничения внешнего ключа.
Что мне здесь не хватает? Как я могу просто отбросить отношения после удаления одного объекта на одной стороне отношения один-ко-многим в Fluent NHibernate?