之间移动对象时从一个集合移动对象到另一个时级联设置为全删除,孤儿,我得到以下异常:功能NHibernate例外集合
删除的对象将通过级联重新保存(从关联中删除已删除的对象)
我认为,当您使用all-delete-orphan时,nhibernate在另一个集合中引用它时不会删除该对象。
任何人都可以确认,当你有文件夹中包含文件夹或文件的对象,并将文件从一个文件夹移动到另一个时,你不应该得到这个异常?
我在vs2010中做了一个示例项目,演示了这种行为。任何人都可以说,如果我的映射是正确的,或者如果有一个错误的nhibernate?
FileMapping.cs
public class FileMapping: ClassMap<File>
{
public FileMapping()
{
Id(x => x.Id, "Id").GeneratedBy.Native("File_seq");
Map(x => x.Name, "Name").Not.Nullable();
References(x => x.Folder).Not.Nullable().Column("idFolder");
}
}
FolderMapping.cs
public class FolderMapping: ClassMap<Folder>
{
public FolderMapping()
{
Id(x => x.Id, "Id").GeneratedBy.Native("Folder_seq");
Map(x => x.Name, "Name").Not.Nullable();
HasMany(x => x.Folders).Inverse().Cascade.AllDeleteOrphan().KeyColumn("idParentFolder");
HasMany(x => x.Files).Inverse().Cascade.AllDeleteOrphan().KeyColumn("idFolder");
References(x => x.ParentFolder).Nullable().Column("idParentFolder");
}
}
示例项目:http://www.mediafire.com/?orxcw63aziq54xo 说明:
- 使项目的属性肯定的ConnectionString正确
- 运行项目
- 点击第一个按钮:连接到数据库
- 点击右上角的按钮来创建表和样本数据(2文件夹对象和1个文件)
- 点击按钮将文件对象移动到其他文件夹中对象
- 点击按钮以保持机会:你将得到DeletedObjectException
无论您是移动文件夹还是文件,您是否都会遇到异常,或者仅在尝试将文件夹移动到其他文件夹时才会发生异常? – Jay 2011-05-26 16:05:56
发布您的测试用例。 – Vadim 2011-05-26 17:39:10
@jay:当我将文件移动到另一个文件夹时出现错误,但还记得在将文件夹移动到另一个文件夹时看到此异常。但是,在我的应用程序中,此方案不再受支持,因此该错误不再显示。 @vadim:更新后的链接和说明 – Martin 2011-05-26 19:44:39