Проблема возникает при создании каскадных внешних ключей с использованием следующих моделей, в которых только одна модель (UserAddition) знает другую (Пользователь), и нет возможности добавить свойство UserAddition к пользователю класс:Fluent NHibernate External Key/Cascading
class User {
public virtual Guid Id { get; set; }
// Other fields of no relevance
}
class UserAddition {
public virtual Guid Id { get; set; }
public virtual User RemoteUser {get; set; }
public virtual string AdditionalData {get; set; }
}
Сформированные таблицы SQL для UserAddition должны иметь внешний ключ для пользователя, который установлен в положении ON DELETE CASCADE (установка ON UPDATE не важно).
При использовании следующего класса сопоставления для внешнего ключа всегда установлено значение «Нет действий», даже если оно указано иначе при сопоставлении. Я что-то упускаю?
public class UserAdditionMapping : ClassMap<UserAddition>
{
public TrainerToEmployeeMapping()
{
this.Id(x => x.Id);
this.References(x => x.RemoteUser).ForeignKey().Cascade.All();
}
}
База данных используется является Microsoft SQL Server 11.
Спасибо.
Возможно, существует недостающая связь между сопоставлениями. Вы уже просмотрели http://stackoverflow.com/questions/4017901/fluent-nhibernate-cascade-delete-not-working –
Как я уже говорил выше, Пользователь не может иметь ссылку на UserAddition - только UserAddition может иметь Поле пользователя - я ищу решение, в котором мне не нужно изменять класс User. – Fionn
http://stackoverflow.com/a/7737697/40822 – dotjoe