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
}
我需要定期刷新我的视频副本,这意味着我需要删除所有的视频,不再映射到特定的流派。在例行程序中,我将只有一个列表,目前已映射的视频流派,但我需要打破之间的联系,视频和流派的那些不再映射。
在原始Sql中,我可以说:
DELETE FROM VideoGenre WHERE GenreId=@GenreId AND VideoID NOT IN (@VideoIdList)
其中VideoIdList可能是“1,2,3,4,5,6”。
如何使用NHibernate完成相同的任务?我应该使用HQL还是原始SQL?
另一种方法是检索与VideoIdList不匹配的所有视频(我希望此列表几乎总是空的-视频的类型不经常更改:)),然后从每个视频的类型集合中删除类型,然后更新()类型。这种方法看起来像是浪费了数据库的时间。缓存是否意味着只有一次旅行,并且有任何删除?