0
我有了多個流派視頻實體給定列表中存在記錄,刪除不使用NHibernate
public class Video
{
public int Id { get; set; }
// other fields omitted for brevity
public IList<Genre> Genres { get; set; }
}
public class Genre
{
public int Id { get; set; }
public string Name { get; set; }
// fields omitted for brevity
}
起初我填充從XML文件包含所有類型的視頻實體及其流派和每個流派的視頻(一個視頻可能會出現多次,在不同的流派下)。
我需要定期刷新我的視頻副本,這意味着我需要刪除所有不再映射到特定類型的視頻。在例程中,我只有一個當前映射的視頻流派的列表,但我需要打破視頻和流派之間的鏈接,以便不再映射。
在原始的SQL我可以說:
DELETE FROM VideoGenre WHERE [email protected] AND VideoID NOT IN (@VideoIdList)
凡VideoIdList可能是 「1,2,3,4,5,6」。
我該如何使用NHibernate完成同樣的事情?我應該使用HQL還是原始SQL?
另一種方法可以檢索所有不匹配VideoIdList的視頻(我希望這個列表幾乎總是空的 - 視頻不會經常改變類型:)),然後從每個視頻的流派集合中刪除流派然後更新()流派。這種方法似乎像浪費到數據庫的行程。緩存是否意味着只有一次旅行,任何刪除操作都會被刪除?
酷感謝拉斐爾。我之前找到了你的鏈接,並使用session.CreateSqlQuery和你發佈的相同查詢來實現。 – 2010-09-28 00:29:32