私の問題は、1対多の関係からオブジェクトを削除すると、子レコードは削除されずに孤立してしまうということです。私はそれが私のドメインモデルを設定したかどうか、または私は自動マップ設定中に何かを設定していないかどうかは分かりません。鑑定 - >選手権の関係は、孤立した記録が出ているところです。それらはShortlistMentor
テーブルとShortListQuestionResponse
テーブルの両方で発生します。私が期待するのは、関係からShortlistMentor
を削除すると、それがShortlistMentorテーブルから削除され、ShortListQuestionResponseテーブルのエントリも削除されるということです。流暢Nhibernate 1つから多くの孤立したレコード
public class Appraisal : BaseEntity
{
public Appraisal()
{
ShortlistedMentors = new List<ShortlistedMentor>();
ApprovedMentor = new User();
College = new RefData();
}
#region Primitive Properties
public virtual bool Decision { get; set; }
public virtual System.DateTime? ApprovedDate { get; set; }
public virtual System.DateTime? AcceptedDate { get; set; }
public virtual System.DateTime? CompletionTargetDate { get; set; }
public virtual string RejectionReason { get; set; }
public virtual IList<ShortlistedMentor> ShortlistedMentors { get; set; }
public virtual User ApprovedMentor { get; set; }
public virtual RefData College { get; set; }
}
アップ
.Mappings
(
m =>
m.AutoMappings.Add
(
AutoMap.AssemblyOf<User>(cfg)
.Override<Client>(map =>{map.HasManyToMany(x => x.SICCodes).Table("SICRefDataToClient");})
.IgnoreBase<BaseEntity>()
.Conventions.Add(new StringColumnLengthConvention(),new EnumConvention(),DefaultCascade.SaveUpdate())
.Conventions.Add(DefaultLazy.Always())
)
オートマップセットこのヘルプ場合はわからないが、これは私がコレクションから項目を削除し、
新しいを追加している方法ですProjectToUpdate.Appraisal.ShortlistedMentors.Clear();
foreach (var userId in Request.Form["ProjectToEdit.Appraisal.ShortlistedMentors"].Split(','))
{
var user = _membershipService.GetUser(Convert.ToInt16(userId));
ProjectToUpdate.Appraisal.ShortlistedMentors.Add(new ShortlistedMentor(){Mentor = user,ShortListQuestionResponses = new List<ShortListQuestionResponse>()});
}
私はそれを試してみましたが、SHortlistedMentorsコレクションにエントリを追加しようとすると次のエラーが発生します "所有しているエンティティインスタンスによってcascade =" all-delete-orphan " Poco.Appraisal.ShortlistedMentors " – Simon
このエラーメッセージは、コレクションの参照を削除してはいけないことを示している可能性があります。これらの2つの記事を参照して、この問題を解決できるかどうかを確認してください:[here](http://stackoverflow.com/questions/2127016/nhibernate-mapping-a-collection-with-cascade-all-delete-orphan -was-no-longer-r)と[here](http://www.sleberknight.com/blog/sleberkn/entry/20070329) –
私はこれを投稿する前に最初の記事を読んでいました。コレクションをクリアすることによって提案されたハッシュClear()を実行し、新しい要素を追加しなおしますが、まだエラーが表示されます。 – Simon