0

流暢な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;
    }

ご入力いただきありがとうございます。

4

2 に答える 2

0

「BlogPageToPage」がデータベース名、テーブル名、または列名のいずれとも一致していません...「BlogPageToPage」オブジェクトについて言及した場所を見つけることができますか?

于 2012-06-13T04:08:36.880 に答える
0

もちろん、私はばかです。

そのテーブルを探している理由は、親であるPageオブジェクトのリストとしてBlogPagesを持っているためです。

したがって、削除しようとすると、その関連付けに一致する別のテーブルが存在するはずだと単純に考えられます。

問題のある行:

    public virtual IList<BlogPage> BlogPages { get; set; }
于 2012-06-13T05:09:17.173 に答える