流暢なnhibernateテーブル継承を使用してオブジェクトを削除すると例外が発生します。
アプリケーションの構造とマッピングの何が間違っているのか、そしてテーブルの継承を使用しているときに多対多のマッピングテーブルを探しているのはなぜですか?
追加と更新は正常に機能します。
マッピングを明示的に設定していません。デフォルトの流暢なnhibernateマッピングを使用しています。
以下に示すカスケードを処理するためのオーバーライドを除いて:
public class CascadeAll : IHasOneConvention, IHasManyConvention, IReferenceConvention
{
public void Apply(IOneToOneInstance instance)
{
instance.Cascade.All();
}
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Cascade.All();
}
public void Apply(IManyToOneInstance instance)
{
instance.Cascade.All();
}
}
例外は次のとおりです。
Invalid object name 'BlogPageToPage'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Invalid object name 'BlogPageToPage'.
私のデータベースはこんな感じです。
Page
Id (Guid)
Name
etc.
BlogPage
Page_Id (Guid, exact same as parent page)
etc.
クラス:
public class Page : EntityBase
{
public Page()
{
BlogPages = new List<BlogPage>();
}
public virtual IList<BlogPage> BlogPages { get; set; }
}
public class BlogPage : Page
{
public BlogPage()
{
}
public virtual IList<Post> Posts { get; set; }
}
私の削除は次のようになります:
public bool Delete(T model)
{
Session.Delete(model);
return true;
}
ご入力いただきありがとうございます。