Посмотрите на лица -Обновление ребенка вместо того, чтобы удалить его
class Person
{
int id { get; set; };
IList<PersonAddress> Addresses { set; get; }
...
}
Теперь при обновлении человека из пользовательского интерфейса, если я просто удалить некоторые адреса из списка адрес я палочка на самом деле удалить адрес записи из БД , в настоящее время это обновляет значение таблицы адресов personId = NULL и не удаляет запись адреса. Кто-нибудь знает как это сделать. может быть проблема с отображением.
Здесь я добавляю файл сопоставления всего Person
.
public class PersonMappingOverride : IAutoMappingOverride<Person>
{
public void Override(AutoMapping<Person> mapping)
{
mapping.Schema(Schemas.Common);
mapping.Table("Person");
mapping.Map(x => x.FirstName).Not.Nullable();
mapping.Map(x => x.LastName).Not.Nullable();
mapping.Map(x => x.DateOfBirth).Nullable();
mapping.References(x => x.Title);
mapping.References(x => x.Ethnicity);
mapping.References(x => x.Language);
mapping.References(x => x.Religion);
mapping.References(x => x.Country);
mapping.References(x => x.Gender).Not.Nullable();
mapping.References(x => x.LoginDetail);
mapping.HasMany(x => x.Addresses)
.ForeignKeyConstraintName("FK_PersonAddress_Person_PersonID")
.Where("DeletedDate is null")
.Cascade.AllDeleteOrphan()
.Cascade.SaveUpdate();
mapping.HasMany(x => x.TelephoneNumbers)
.ForeignKeyConstraintName("FK_PersonTelephoneNumber_Person_PersonID")
.Where("DeletedDate is null")
.Cascade.AllDeleteOrphan()
.Cascade.SaveUpdate();
mapping.HasMany(x => x.EmailAddresses)
.ForeignKeyConstraintName("FK_PersonEmailAddress_Person_PersonID")
.Where("DeletedDate is null")
.Cascade.AllDeleteOrphan()
.Cascade.SaveUpdate();
mapping.References(x => x.Photograph);
mapping.References(x => x.Signature);
mapping.HasMany(x => x.Photographs)
.ForeignKeyConstraintName("FK_PersonPhotograph_Person_PersonID")
.Where("DeletedDate is null")
.Cascade.AllDeleteOrphan()
.Cascade.SaveUpdate();
mapping.HasMany(x => x.Signatures)
.ForeignKeyConstraintName("FK_PersonSignature_Person_PersonID")
.Where("DeletedDate is null")
.Cascade.AllDeleteOrphan()
.Cascade.SaveUpdate();
//mapping.HasMany(x => x.JobRoles)
// .ForeignKeyConstraintName("FK_PersonJobRole_Person_PersonID");
mapping.HasMany(x => x.Skills)
.ForeignKeyConstraintName("FK_PersonSkill_Person");
mapping.HasMany(x => x.SpokenLanguages)
.ForeignKeyConstraintName("FK_PersonSpokenLanguage_Person");
mapping.HasMany(x => x.ForbiddenCentres)
.ForeignKeyConstraintName("FK_PersonForbiddenCentre_Person");
mapping.HasMany(x => x.Availabilities)
.ForeignKeyConstraintName("FK_PersonAvailability_Person");
mapping.HasMany(x => x.Qualifications)
.ForeignKeyConstraintName("FK_PersonQualification_Person");
mapping.IgnoreProperty(x => x.PrimaryEmailAddress);
mapping.IgnoreProperty(x => x.WorkAddress);
}
}
Это для PersonAddress
отображения:
public class PersonAddressMappingOverride : IAutoMappingOverride<PersonAddress>
{
public void Override(AutoMapping<PersonAddress> mapping)
{
mapping.Schema(Schemas.Common);
mapping.Table("PersonAddress");
mapping.References(x => x.Person);
mapping.References(x => x.Address).Cascade.SaveUpdate().Not.Nullable();
mapping.References(x => x.AddressType).Not.Nullable();
}
}
Это вопрос отображения поэтому, пожалуйста, выкладывает отображение также ta. – Rippo
mapping.HasMany (х => x.Addresses) .ForeignKeyConstraintName ("FK_PersonAddress_Person_PersonID") .гд ("DeletedDate является нулевым") .Cascade.AllDeleteOrphan() .Cascade.SaveUpdate(); – sachin
Это файл сопоставления для класса Person, который, как он выглядит, уже использует Cascade.AllDeleteOrphan() – sachin