0
我試圖刪除NHibernate中映射表的所有記錄,作爲通過瀏覽器進行功能測試的一部分。從其他問題來看,我得到了所有映射類的類元數據,這些數據爲我提供了表名。從那裏我對數據庫執行SQL刪除語句。這很好,除非我有一個不直接映射的連接表,但映射爲多對多關係的一部分。如何在不知道表名的情況下使用NHibernate刪除JOIN表(多對多)中的記錄
這是我需要清除的多對多關係表,我無法弄清楚如何做到這一點。雖然我不能發佈準確的映射,這裏是數據庫模式非常近似:
BlogPosts
---------
BlogPostId (Primary Key)
Tags
----
TagId (Primary Key)
BlogPostTags
------------
BlogPostId (Foreign Key)
TagId (Foreign Key)
而且功能NHibernate映射的密切近似值:
public class BlogPostMap : ClassMap<BlogPost>
{
public BlogPostMap()
{
// ...
HasManyToMany(post => post.Tags)
.Table("BlogPostTags")
.ChildKeyColumn("TagId")
.ParentKeyColumn("BlogPostId")
.AsSet()
.Access.CamelCaseField()
.Cascade.All();
}
}
如何刪除記錄在「BlogPostTags」表中沒有硬編碼表名,並且沒有啓用級聯刪除?
好拿到表名。你如何獲得配置? –
棘手的部分是獲取用於創建會話工廠的'NHibernate.Cfg.Configuration'對象。就我而言,我有一個「數據上下文」對象,它包裝了我的NHibernate會話和會話工廠,所以我只是在該類上添加了一個屬性來保存配置。 –